web-dev-qa-db-de.com

Python Django: Kein Modul namens Sicherheit

Bei der Bereitstellung meines Projekts auf einem Ubuntu-Server mithilfe einer Virtualenv habe ich folgende Fehlermeldung erhalten:

[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

Ich weiß nicht, warum es diesen Fehler gibt, meine Konfiguration funktioniert gut mit einer Neuinstallation ... Aber wenn ich mein aktuelles Projekt kopiere, habe ich Fehler 500 erhalten. Ich habe versucht, "Teil für Teil" bereitzustellen, aber ich kann nicht finden, was falsch.

Sagen Sie mir, wenn Sie mehr von meinen Dateien benötigen, weil ich nicht wirklich weiß, wo das Problem liegt ...

Vielen Dank.

22
Zat42

Ich traf das gleiche Problem. Ich habe festgestellt, dass ich Django 1.7.1 verwende, um ein von 1.8dev generiertes Projekt auszuführen. Wenn ich wieder zu 1.7.1 wechsle und "Django.middleware.security.SecurityMiddleware" in setting.py entferne, scheint es in Ordnung zu sein.

46
Fox1978

Also habe ich eine Lösung gefunden:

'Django.middleware.security.SecurityMiddleware'

Diese Zeile ist in MIDDLEWARE_CLASSES, von settings.py . Wenn ich diese Zeile lösche, habe ich keine Probleme mehr mit dem Sicherheitsmodul, aber ich denke, dies ist kein guter Weg, um das Problem zu lösen ... Beziehung zum CRSF-Token und solchen Dingen.

Noch eine Idee, um das Problem zu beheben?

12
Zat42

Ich bin auf das gleiche Problem gestoßen. Es stellte sich heraus, dass ich versehentlich meine Django-admin.py-Version meines Computers verwendet habe, um mein Django-Projekt zu starten, und nicht die in der virtualenv installierte. Nach der Installation von Django innerhalb von virtualenv musste ich source bin/activate erneut starten, bevor ich einen der Django-Admin-Befehle ausführte.

8
iross

Ich hatte das gleiche Problem, wenn ich mein Projekt von einem anderen PC aus wechselte. Da mir die Möglichkeit, das zu entfernen, nicht sehr gefallen hat 

"Django.middleware.security.SecurityMiddleware"

Ich habe gerade ein neues Projekt und eine neue App erstellt, die Einstellungen von Hand geändert und die restlichen Dateien kopiert, und es hat funktioniert :)

Ich vermute, es hat etwas mit dem geheimen Schlüssel des Projekts zu tun.

1
Dave Fontes

Wenn Sie zuvor ein virtualenv für dieses Projekt verwendet haben, stellen Sie sicher, dass Sie es für das nächste Mal aktivieren, wenn Sie dieses Projekt source bin/activate verwenden, oder überprüfen Sie, ob Sie die richtige Version von Django verwenden.

Wenn Sie entfernen einige Middlewares _ möchten, müssen Sie sicherstellen, was Sie tun.

verwenden Sie dies, es hat für mich funktioniert

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
nite wolve

Ich vermute, dass dies in Django Version 1.7.x der Fall ist, wenn Sie versuchen, ein Projekt zu öffnen, das mit einer Django-Version höher als 1.7.x erstellt wurde

'Django.middleware.security.SecurityMiddleware' hilft zwar, aber es wird ein anderes Problem 'session error' oder etwas anderes erstellt

um das zu beheben:

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
0
Hendrik T