2016-11-22 2 views
0

Я пытаюсь настроить Django сImportError: Нет модуль с именем Джанго, sys.path отлично

python manage.py shell 

И я получаю ошибку:

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 

Я видел много вопросов об этой ошибке, и большинство из них, по-видимому, сосредоточено на том, что путь django не включен в sys.path python. Моя же. Когда я бегу

sudo pip install django 

Я получаю

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

И выход для моего sys.path является

['', '/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'] 

Так путь абсолютно там. Какие у меня варианты? Это удаленный интерпретатор, использующий SSH от Pycharm, и это серьезно задерживает мою работу.

+0

Использовал ли вы виртуальный env при установке django? –

+0

Я этого не сделал, я относительно незнакома с виртуальным env. Есть ли причина использовать его, когда на виртуальной машине существует только одна версия python? –

+0

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

ответ

1

Если which python, когда он управляется обычным пользователем, возвращает ~/bin/python, то это другой Python от одного запуска суперпользователя, который, согласно вашим словам, равен /bin/python. sudo pip install django работает как суперпользователь и устанавливает Django в среде Python системы. Когда после этого вы выполняете python manage.py shell, он запускает другой Python, и что в другой среде Python, по-видимому, не установлен Django.

Если вы запустите pip install django без sudo это могло бы работать, но так как у вас есть разрешение суперпользователя на этой машине, было бы лучше, чтобы избавиться от установки Python, что у вас есть в домашней директории обычного пользователя, и убедитесь, что система имеет только одну установку Python, пока вы действительно не знаете, что делаете. В противном случае вы будете в замешательстве, используете ли вы virtualenv или нет.

Редактировать: Я не согласен со многими комментариями, которые говорят вам использовать virtualenv. Без этого вы достаточно смущены. Давайте сначала упростим проблему. Удалите все созданные вами virtualenvs (вы делаете это, удаляя каталоги) и забывайте все о virtualenv. Выйдите из системы и снова войдите в систему (это обеспечит деактивацию virtualenvs). Не изменяйте свой manage.py, это нормально, поскольку это было изначально. Установите Django по всей системе с sudo pip install django, затем попробуйте запустить проект Django с помощью python manage.py shell. Только после того, как вы его заработаете, и вы начнете захватывать систему, начните играть с virtualenv. Virtualenv отлично, но все в свое время. (virtualenv demystified - введение в virtualenv, написанное мной.)

+0

Однако я установил django в свою виртуальную среду с помощью pip install django, не используя sudo вообще. Поэтому я думаю, что django установлен как в системе, так и в виртуальных путях ... Удалось ли мне удалить домашнюю домашнюю страницу python пользователя? –

+0

Похоже, что у вас установлен django глобально, а не в виртуальной среде '/ usr/lib64/python2.7/site-packages/django /'. –

+0

Я просто удалил и повторно создал виртуальный виртуальный. Любопытно, что я могу ввести импорт django в терминал python, и он отлично работает. у моего manage.py есть #!/usr/bin/env python наверху. Я попытаюсь изменить это, любые другие идеи? –

Смежные вопросы