2013-10-11 11 views
22

Ho un'app Django su Heroku. Ho alcuni problemi con i file statici (si caricano in un Heroku environment ma non in un altro), quindi ho provato il comando di debug raccomandato here.Heroku & Django: "OSError: Nessun file o directory di questo tipo: '/ app/{myappname}/static'"

$ 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' 

Ecco il mio settings.py, che è la stessa cosa Heroku consiglia:

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'), 
) 

ottengo l'errore anche se non ho in realtà hanno una directory "statica" a livello di radice nel mio Git repo (testato in entrambi i modi).

Qualche idea?

+0

Puoi pubblicare il tuo INSTALLED_APPS? – fasouto

risposta

41

Cerca una cartella denominata "statica" che si trova accanto a settings.py, cioè nella cartella del progetto, non nella radice del repository git.

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

Nota che le cartelle vuote non vengono monitorati da git, quindi dovrete mettere un file vuoto in là se è vuota. In alternativa, rimuovere l'impostazione STATICFILES_DIRS finché non è necessario.

+0

Ho avuto lo stesso problema su un sito heroku e l'unica cosa che mancava era un file .gitignore vuoto! –

+1

Quasi nulla ha funzionato per me, tranne l'ultimo elemento "In alternativa, rimuovi l'impostazione STATICFILES_DIRS finché non ne hai bisogno", il che ha reso tutto perfettamente funzionante. Heroku non avrebbe "accumulato elettricità statica" finché quella linea non fosse scomparsa. – CoderOfTheNight

9

Ho appena avuto questo stesso problema, ed ecco la soluzione che ha funzionato per me:

ho cambiato:

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

a:

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

Questo ha funzionato anche per me, sebbene il mio percorso richiedesse lo spostamento di una directory: 'os.path.join (BASE_DIR, '../ myappfolder/static')' – Joseph

+0

Bene! Grazie a tutti e due . – glaucon

+0

@Joseph Grazie ../myappfolder/static ha funzionato per me. – pavanw3b

1

@ risposta di joerick sopra è la cosa . Tuttavia, se non si desidera inserire un'altra cartella 'statica' (git root/{app}/static), si potrebbe pensare di cambiare la variabile BASE_DIR che viene inizialmente fornito da django-admin makeproject:

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

che è solo la directory (git root /)