我在git repo中在本地开发了一个django应用程序。我为该项目启动了一个EC2实例,并设置了一个virtualenv(我相信是)正确的包/依赖项。然后我继续克隆我的repo到virtualenv。现在,由于我收到以下错误,我遇到了困难:
我尝试使用python manage.py runserver example.com/8080
进行测试。我肯定会使用source bin/activate
激活virtualenv,就像我在当地的virtualenv中所做的那样。当我致电... runserver
时,我收到以下错误:
Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
以下是sudo pip freeze
产生的内容:
Warning: cannot find svn location for distribute==0.6.24dev-r0
Cheetah==2.4.4
Django==1.5.2
Fabric==1.8.0
GnuPGInterface==0.3.2
Landscape-Client==12.05
M2Crypto==0.21.1
PAM==0.4.2
PyYAML==3.10
South==0.8.2
Twisted-Core==11.1.0
Twisted-Names==11.1.0
Twisted-Web==11.1.0
apt-xapian-index==0.44
argparse==1.2.1
boto==2.2.2
chardet==2.0.1
cloud-init==0.6.3
command-not-found==0.2.44
configobj==4.7.2
## FIXME: could not find svn URL in dependency_links for this package:
distribute==0.6.24dev-r0
django-s3-folder-storage==0.1
django-storages==1.1.8
django-tastypie==0.10.0
ecdsa==0.9
euca2ools==2.0.0
gunicorn==18.0
httplib2==0.7.2
keyring==0.9.2
language-selector==0.1
launchpadlib==1.9.12
lazr.restfulclient==0.12.0
lazr.uri==1.0.3
medusa==0.5.4
meld3==0.6.5
oauth==1.0.1
paramiko==1.12.0
psycopg2==2.5.1
pyOpenSSL==0.12
pycrypto==2.4.1
pycurl==7.19.0
pyserial==2.5
python-apt==0.8.3ubuntu7.1
python-dateutil==2.1
python-debian==0.1.21ubuntu1
simplejson==2.3.2
six==1.4.1
supervisor==3.0a8
ufw==0.31.1-1
unattended-upgrades==0.1
virtualenv==1.10.1
wadllib==1.3.0
wsgiref==0.1.2
zope.interface==3.6.1
...这是我的./manage.py
文件:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
有关如何修复此错误的任何想法?我试图将#!/usr/bin/env python
更改为#!/var/www/paletto-env/bin python
,尝试将其指向我的实际python路径,但它没有任何明显的变化,所以我将其更改回来。
感谢您的帮助。
答案 0 :(得分:3)
看起来你的环境找不到Django,即使它显然在你的pip冻结中。
尝试从虚拟环境打开Python(而不是Django)shell并输入:
import django
django.VERSION
如果遇到同样的错误,Django安装可能存在问题。您的虚拟环境可能无法找到它。您可以尝试修改路径设置,或者只是重新安装Django。
如果您可以成功导入Django,或者您尝试重新安装但它不起作用,则可能存在权限问题。确保负责运行服务器的用户可以访问virtualenv中存储python库的任何地方。
答案 1 :(得分:3)
我和你有完全相同的问题,这就是我解决它的方法(免责声明:我不确定这是否是绝对正确的方法,但它对我有效,一切似乎都正确)。
尝试使用pip install (package)
代替sudo pip install (package)
我给Django完整安装文档(See here)快速阅读并且遇到了一点,基本上说你在virtualenv中使用pip时不需要超级用户权限。我只是假设两者都没问题,但我现在意识到情况可能并非如此。
我怀疑是因为我输入了sudo pip install django
它在我的virtualenv项目中将它安装在我当地垃圾箱上方的某处。我怀疑这是因为当我输入python manage.py runserver
时出现错误;但是,当我输入sudo python manage.py runserver
时,一切正常。
此外,键入sudo pip freeze
会显示我的大型库,而pip freeze
会显示我的本地库以显示我的virtualenv。
我不想在所有事情之前键入sudo (do stuff)
我想要一个漂亮,干净和正确的virtualenv所以我只是重新安装了django但是我的本地虚拟env pip install django
现在django在正确的virtualenv库,pip freeze
返回正确的内容,python manage.py runserver
正常运行!
答案 2 :(得分:1)
django-admin.py startproject
会在manage.py
中使用#!/usr/bin/env python
创建一个shebang。
如果这不是你的python可执行文件的路径,或者你使用python3
,只需编辑manage.py
以反映这一点。
答案 3 :(得分:0)
在激活您的virtualenv 后重新安装所有python软件包。
答案 4 :(得分:0)
也许Django丢失了一些pip插件,所以我们可以用Tarball安装Django:
安装它。
$ tar zxvf Django-1.6.5.tar.gz
$ cd Django-1.6.5 /
$ python setup.py install