ImportError:没有名为django的模块,sys.path很好

时间:2016-11-22 21:11:39

标签: python django python-2.7

我试图用

配置Django
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的路径不包含在python的sys.path中这一事实。然而,我的是。我跑的时候

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

所以这条路绝对存在。 我有什么选择?这是一个使用Pycharm SSH的远程解释器,它严重拖延了我的工作。

1 个答案:

答案 0 :(得分:1)

如果which python,当由普通用户运行时,返回~/bin/python,那么这是一个与超级用户运行的Python不同的Python,根据你的说法,它是{{1 }}。 /bin/python以超级用户身份运行,并在系统的Python环境中安装Django。之后,当你执行sudo pip install django时,它运行另一个Python,而其他Python的环境显然没有安装Django。

如果你在没有python manage.py shell的情况下运行pip install django它可能会有效,但由于你拥有该机器的超级用户权限,最好摆脱普通用户所拥有的Python安装&# 39; s主目录,并确保您的系统只有一个Python安装,直到您真正知道自己在做什么。否则,你是否会使用virtualenv会感到困惑。

编辑:我不同意许多评论,告诉您使用virtualenv。没有它你就很困惑。让我们先解决问题。删除你创建的所有virtualenv(你通过删除目录来实现这一点)并忘记virtualenv的一切。注销并再次登录(这将确保停用virtualenvs)。不要修改你的sudo,它本来就好了。使用manage.py在系统范围内安装Django,然后尝试使用sudo pip install django运行Django项目。只有在你开始工作并开始掌握系统之后才开始玩virtualenv。 Virtualenv很棒,但在当时的一切。 (virtualenv demystified是对我所写的virtualenv的介绍。)