2016-11-22 144 views
0

我试图用导入错误:没有模块名为Django的,sys.path的罚款

python manage.py shell 

配置Django和我得到的错误:

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 

我已经看到了很多的问题,关于这个错误,其中大部分似乎都集中在python的sys.path中没有包含django路径的事实上。不过,我的是。当我运行

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的远程解释器,它严重延迟了我的工作。

+0

安装django时是否使用虚拟env? –

+0

我没有,我对虚拟环境相对陌生。当虚拟机上只存在一个python版本时,是否有任何理由使用它? –

+0

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

回答

1

如果which python由普通用户运行,返回~/bin/python,那么这是与超级用户运行的不同的Python,根据您所说的,它是/bin/pythonsudo pip install django作为超级用户运行,并在系统的Python环境中安装Django。之后,执行python manage.py shell时,它会运行另一个Python,而其他Python的环境显然没有安装Django。

如果您运行的是pip install django而没有sudo它可能有效,但由于您在该机器上拥有超级用户权限,因此最好是摆脱正常用户主目录中的Python安装,并确保您的系统只有一个Python安装,直到你真的知道你在做什么。否则,你会不会使用virtualenv而感到困惑。

编辑:我不同意许多评论,告诉你使用virtualenv。没有它,你会感到困惑。我们首先简化问题。删除你创建的所有virtualenvs(你通过删除目录来做到这一点)并忘记关于virtualenv的一切。注销并重新登录(这将确保virtualenvs被禁用)。不要修改您的manage.py,原来它没问题。使用sudo pip install django安装Django系统,然后尝试使用python manage.py shell运行您的Django项目。只有当你得到它的工作,并开始掌握系统,继续开始使用virtualenv。 Virtualenv是伟大的,但一切都在它的时间。 (virtualenv demystified是我写的virtualenv的介绍。)

+0

但是,我用pip install django在我的虚拟环境中安装了django,根本不使用sudo。所以我认为django安装在系统和虚拟路径中......在这一点上删除用户的家庭python帮助我吗? –

+0

看起来你已经在全局安装了django,而不是在虚拟环境'/ usr/lib64/python2.7/site-packages/django /'中。 –

+0

我刚刚删除并重新实例化virtualenv。奇怪的是,我可以在python终端中键入import django,它工作正常。我的manage.py在顶部有#!/ usr/bin/env python。我会尝试修改这个,任何其他的想法? –

相关问题