2016-11-22 5 views
0

Ich versuche, Django zu konfigurieren, um mitImport: Kein Modul mit dem Namen django, sys.path feinen

python manage.py shell 

Und ich bekomme die Fehlermeldung:

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 341, in execute 
    django.setup() 
    File "/usr/lib64/python2.7/site-packages/django/__init__.py", line 27, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/usr/lib64/python2.7/site-packages/django/apps/registry.py", line 85, in populate 
    app_config = AppConfig.create(entry) 
    File "/usr/lib64/python2.7/site-packages/django/apps/config.py", line 123, in create 
    import_module(entry) 
    File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named django 

Ich habe eine Menge von Fragen gesehen über diesen Fehler, und die meisten scheinen auf die Tatsache zentriert zu sein, dass der Pfad von django nicht in pythons sys.path enthalten ist. Meins ist jedoch. Als ich

laufen
sudo pip install django 

ich

Requirement already satisfied: django in /usr/lib64/python2.7/site-packages 

Und die Ausgabe für meine sys.path ist

['', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib64/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages'] 

So ist der Pfad absolut ist. Was sind meine Optionen hier? Dies ist ein Remote-Interpreter, der SSH von Pycharm verwendet, und das verzögert meine Arbeit erheblich.

+0

Haben Sie ein virtuelles env bei der Installation von Django verwendet? –

+0

Ich nicht, ich bin relativ unbekannt mit virtuellen env. Gibt es einen Grund, einen zu verwenden, wenn nur eine Python-Version auf der virtuellen Maschine existiert? –

+0

https://virtualenvwrapper.readthedocs.io/en/latest/ – PetarP

Antwort

1

Wenn which python, wenn vom normalen Benutzer ausgeführt wird, ~/bin/python zurückgibt, dann ist dies ein anderes Python von demjenigen, der vom Superuser ausgeführt wird, der, je nachdem, was Sie sagen, /bin/python ist. sudo pip install django läuft als Superuser und installiert Django in der Python-Umgebung des Systems. Wenn Sie danach python manage.py shell ausführen, wird ein anderes Python ausgeführt, und in der Umgebung von Python ist offenbar Django nicht installiert.

Wenn Sie pip install django ohne sudo laufen könnte es funktionieren, aber da Sie Superuser-Berechtigung auf dieser Maschine haben wäre es besser, die Python-Installation, um loszuwerden, die Sie in der normalen Benutzer-Home-Verzeichnis haben, und machen Sie Ihr System sicher hat nur eine Python-Installation, bis Sie wirklich wissen, was Sie tun. Ansonsten wirst du verwirrt sein, ob du virtualenv verwendest oder nicht.

Edit: Ich stimme nicht mit vielen Kommentaren, die Ihnen sagen, virtualenv verwenden. Sie sind genug ohne es verwirrt. Lassen Sie uns zuerst das Problem vereinfachen. Entferne alle erstellten virtualenvs (indem du die Verzeichnisse löschst) und vergiss alles über virtualenv. Abmelden und erneut einloggen (dadurch wird sichergestellt, dass die Virtualenvs deaktiviert sind). Ändern Sie nicht Ihre manage.py, es ist in Ordnung, wie es ursprünglich war. Installieren Sie Django systemweit mit sudo pip install django, und versuchen Sie dann, Ihr Django-Projekt mit python manage.py shell auszuführen. Erst nachdem Sie es in Betrieb genommen haben und Sie das System in den Griff bekommen, beginnen Sie mit dem Spielen mit virtualenv. Virtualenv ist großartig, aber alles in seiner Zeit. (virtualenv demystified ist eine Einführung in virtualenv von mir geschrieben.)

+0

Allerdings installierte ich Django in meiner virtuellen Umgebung mit Pip installieren Django, nicht mit Sudo überhaupt. Also denke ich, dass Django sowohl im System als auch in den virtuellen Pfaden installiert ist ... Würde mir das Entfernen des Home Python des Benutzers zu diesem Zeitpunkt helfen? –

+0

Sieht so aus, als hätten Sie django global installiert, nicht in einer virtuellen Umgebung '/ usr/lib64/python2.7/site-packages/django /'. –

+0

Ich löschte gerade und instanziiert die virtualenv. Kurioserweise kann ich Import-Django in Python-Terminal eingeben und es funktioniert gut. Meine manage.py hat #!/usr/bin/env python an der Spitze. Ich werde versuchen, dies zu ändern, irgendwelche anderen Ideen? –

Verwandte Themen