4

我在 git repo 中本地开发了一个 django 应用程序。我为该项目启动了一个 EC2 实例,并设置了一个带有(我认为是)正确包/依赖项的 virtualenv。然后我继续将我的 repo 克隆到 virtualenv 中。现在,由于收到以下错误,我遇到了困难:

我试图用它python manage.py runserver example.com/8080来测试。我肯定会使用 激活 virtualenv source bin/activate,就像我在本地 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 路径,但它并没有带来任何明显的变化,所以我把它改回来了。

谢谢您的帮助。

4

5 回答 5

3

看起来你的环境找不到 Django,即使它显然在你的 pip freeze 中。

尝试从您的虚拟环境中打开一个 Python(不是 Django)shell 并输入:

import django
django.VERSION

如果您遇到相同的错误,则可能是您的 Django 安装存在问题。您的虚拟环境可能找不到它。您可以尝试修改路径设置,或者只是重新安装 Django。

如果可以成功导入 Django,或者尝试重新安装但仍然无法正常工作,则可能是权限问题。确保负责运行服务器的用户可以从 virtualenv 访问您的 python 库的存储位置。

于 2013-10-12T00:52:59.570 回答
3

我遇到了与您几乎完全相同的问题,这就是我解决它的方法(免责声明:我不确定这是否是绝对正确的方法,但它对我有用,而且一切似乎都是正确的)。

简短的回答:

尝试pip install (package)代替sudo pip install (package)

长答案:

我快速阅读了 Django 完整安装文档(请参阅此处),并遇到了一些基本上说在 virtualenv 中使用 pip 时不需要超级用户权限的内容。我只是假设两者都可以,但我现在意识到情况可能并非如此。

我怀疑是因为我输入了它,sudo pip install django所以将它安装在项目的 virtualenv 中本地 bin 上方的某个位置。我怀疑这是因为当我输入时python manage.py runserver出现错误;但是,当我输入sudo python manage.py runserver一切正常时。

此外,键入会sudo pip freeze显示我更大的库,而pip freeze会显示我的 virtualenv 的本地库。

我不想sudo (do stuff)在所有内容之前都输入内容,我想要一个漂亮、干净和适当的 virtualenv,所以我只是重新安装了 django,但是到了我的本地虚拟环境pip install django,现在 django 位于正确的 virtualenv 库中,pip freeze返回正确的内容,并且python manage.py runserver功能正常!

于 2014-08-12T18:04:29.507 回答
1

django-admin.py startprojectmanage.py默认情况下,在with中创建 shebang #!/usr/bin/env python

如果这不是您的 python 可执行文件的路径,或者如果您使用python3,只需编辑manage.py以反映这一点。

于 2014-05-23T13:21:45.250 回答
0

激活 virtualenv后重新安装所有 python 包。

于 2013-10-12T08:22:35.653 回答
0

也许 Django 丢失了一些 pip 插件,所以我们可以使用 Tarball 安装 Django:

  1. https://www.djangoproject.com/download/1.6.5/tarball/
  2. 下载 Django-*.tar.gz
  3. 安装它。

    $ tar zxvf Django-1.6.5.tar.gz

    $ cd Django-1.6.5/

    $ python setup.py 安装

更多...(https://stackoverflow.com/a/24323774/686105

于 2014-06-20T09:14:38.677 回答