2014-09-17 14 views
21

Quando schiero il mio progetto su un Ubuntu Server, utilizzando un virtualenv, ho ottenuto questo errore:Python Django: No module named sicurezza

[17/Sep/2014 22:29:00] "GET/HTTP/1.1" 500 59 
Traceback (most recent call last): 
File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run 
self.result = application(self.environ, self.start_response) 
File "/home/zat42/myproject/monarch/env/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 64, in __call__ 
return self.application(environ, start_response) 
File "/home/zat42/myproject/monarch/env/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 168, in __call__ 
self.load_middleware() 
File "/home/zat42/myproject/monarch/env/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 44, in load_middleware 
mw_class = import_string(middleware_path) 
File "/home/zat42/myproject/monarch/env/local/lib/python2.7/site-packages/django/utils/module_loading.py", line 26, in import_string 
module = import_module(module_path) 
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
__import__(name) 
ImportError: No module named security 

Non so perché c'è questo errore la mia configurazione funziona bene con una nuova installazione ... Ma quando copio il mio progetto corrente, ho ottenuto l'errore 500. Ho provato a distribuire "parte dopo parte" ma non riesco a trovare cosa c'è che non va.

Dimmi se avete bisogno di più dei miei file perché io non so davvero dove sia il problema ...

Grazie.

+0

Avete copiato la cartella virtualenv dalla vostra macchina locale al server? Provare a copiare i file di progetto senza virtualenv e rendere nuovamente virtaulenv sul server senza copiare dal proprio computer. – Celeo

+0

Ho fatto come hai detto, prima ho copiato il mio progetto (da git repo) e poi ho installato un nuovo env (usando "virtualenv env"). – Zat42

+1

Esegui "pip freeze", controlla se i pacchetti sono tutti lì. – danielcorreia

risposta

44

Ho incontrato lo stesso problema. Finalmente, ho scoperto che sto usando django 1.7.1 per eseguire un progetto generato da 1,8dev. Quando torno alla 1.7.1 e rimuovo 'django.middleware.security.SecurityMiddleware' in setting.py, sembra ok.

+0

perfetto. Questa sembra essere la risposta corretta. –

+0

Ho riscontrato questo problema mentre eseguivo runserver senza attivare l'ambiente virtuale (l'ambiente virtuale aveva il django della versione 1.9 e il sistema aveva il django della versione 1.6) –

12

Così, ho trovato una soluzione:

'django.middleware.security.SecurityMiddleware' 

Questa linea è in MIDDLEWARE_CLASSES, da settings.py. Quando cancello questa riga non ho più problemi con il modulo di sicurezza ma immagino che questo non sia un buon modo per risolvere il problema ... Immagino che questa linea sia in relazione con il token crsf e cose del genere.

Qualche altra idea per risolvere il problema?

8

Mi sono imbattuto in questo stesso problema. È risultato che stavo inavvertitamente usando la versione della mia macchina di django-admin.py per avviare il mio progetto Django, piuttosto che quello installato all'interno del virtualenv. Ho finito per dover nuovamente effettuare il source bin/activate dopo aver installato django all'interno del virtualenv, prima di eseguire uno qualsiasi dei comandi di django-admin.

0

uso questo ha funzionato per me

MIDDLEWARE_CLASSES = [ 
'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 
0

Ho avuto lo stesso problema quando si passa il mio progetto da un altro PC. Come non mi piace molto l'opzione data per rimuovere il

'django.middleware.security.SecurityMiddleware'

Ho appena creato un nuovo progetto e una nuova applicazione, modificare le impostazioni di mano e copiare il resto dei file, e ha funzionato :)

Immagino che abbia qualcosa a che fare con la chiave segreta del progetto.

1

Se è stato utilizzato in precedenza un virtualenv per questo progetto assicurarsi che si attiva per la prossima volta che si utilizzerà questo progetto source bin/activate o verificare che si utilizza la versione corretta di django.

Se si desidera rimuovere alcuni middleware quindi è necessario assicurarsi di ciò che si sta facendo.

-2
(myvenv) pip uninstall django==(version) 
(myenv) pip install django==(version) 

Proprio questo.

0

Immagino che questo accada in django versione 1.7.x quando si sta tentando di aprire un progetto creato usando la versione di django superiore a 1.7.x

rimozione 'django.middleware.security.SecurityMiddleware' aiuta, ma creare un altro problema 'session error' o qualcosa

per risolvere questo problema:

pip uninstall django==1.7.x //your current version of django installed 
pip install django==1.9.x //or version that is compatible with the project