导入错误:没有模块名为Django的,sys.path的罚款
我试图用导入错误:没有模块名为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的远程解释器,它严重延迟了我的工作。
如果which python
由普通用户运行,返回~/bin/python
,那么这是与超级用户运行的不同的Python,根据您所说的,它是/bin/python
。 sudo 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的介绍。)
但是,我用pip install django在我的虚拟环境中安装了django,根本不使用sudo。所以我认为django安装在系统和虚拟路径中......在这一点上删除用户的家庭python帮助我吗? –
看起来你已经在全局安装了django,而不是在虚拟环境'/ usr/lib64/python2.7/site-packages/django /'中。 –
我刚刚删除并重新实例化virtualenv。奇怪的是,我可以在python终端中键入import django,它工作正常。我的manage.py在顶部有#!/ usr/bin/env python。我会尝试修改这个,任何其他的想法? –
安装django时是否使用虚拟env? –
我没有,我对虚拟环境相对陌生。当虚拟机上只存在一个python版本时,是否有任何理由使用它? –
https://virtualenvwrapper.readthedocs.io/en/latest/ – PetarP