deploy app python django git heroku django-staticfiles

python - deploy - Heroku y Django: "OSError: No existe ningún archivo o directorio: ''/ app/{myappname}/static''"



launch django app heroku (3)

Acabo de tener el mismo problema, y ​​esta es la solución que funcionó para mí:

Cambié:

STATICFILES_DIRS = ( os.path.join(BASE_DIR, ''static''), )

a:

STATICFILES_DIRS = ( os.path.join(BASE_DIR, ''myappfolder/static''), )

Tengo una aplicación de Django en Heroku. Tengo algunos problemas con los archivos estáticos (se cargan en un environment Heroku pero no en otro), así que probé el comando de depuración recomendado here .

$ heroku run python manage.py collectstatic --noinput Running `python manage.py collectstatic --noinput` attached to terminal... up, run.8771 OSError: [Errno 2] No such file or directory: ''/app/{myappname}/static''

Aquí está mi settings.py, que es lo mismo que recomienda Heroku:

import os import os.path BASE_DIR = os.path.dirname(os.path.abspath(__file__)) STATIC_ROOT = ''staticfiles'' STATIC_URL = ''/static/'' STATICFILES_DIRS = ( os.path.join(BASE_DIR, ''static''), )

Me da el error si realmente tengo un directorio "estático" en el nivel raíz en mi repositorio Git (lo probé de ambas formas).

¿Algunas ideas?


Está buscando una carpeta llamada ''static'' que está al lado de settings.py, es decir, en la carpeta del proyecto, no en la raíz del git repo.

git root/ git root/{app name} git root/{app name}/settings.py git root/{app name}/static/ <- this is what you''re missing

Tenga en cuenta que git no rastrea las carpetas vacías, por lo que tendrá que poner un archivo en blanco allí si está vacío. Alternativamente, elimine la configuración STATICFILES_DIRS hasta que lo necesite.


La respuesta de @ joerick es la cosa. Sin embargo, si no desea colocar otra carpeta "estática" (git root / {su aplicación} / estática), puede considerar cambiar la variable BASE_DIR que inicialmente es provista por django-admin makeproject:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

que es solo el directorio (git root /)