1

我在我的 Django 安装中使用了 Virtualenv,并使用了 Pycrypto 加载了

pip install pycrypto

采购我的环境后。

当我尝试将 Crypto 导入我的模型时,我得到一个导入错误,但是如果使用加载 shell

manage.py shell

它确实加载了,没有问题。

我很确定 django 是从 virtualenv 运行的,因为它运行的是 1.3.1,它比路径上安装的更新,我已经通过 pip 安装了 South,它正在工作。

我也尝试使用安装 Pycrypto

setup.py install

关于我如何修复/调试这个的任何想法?

谢谢

编辑:我对 Django 和 Python 比较陌生,所以它可能很简单

编辑 2:嘿,伊萨克,

有什么方法可以找到所有加载的模块?

我不明白为什么它不能在浏览器中工作,但可以在交互式 shell 中工作?我并不是说它不能,我只是不知道这是否/如何发生。

按要求导入错误:

ImportError at /
No module named Crypto
Request Method: GET
Request URL:    http://*/
Django Version: 1.3.1
Exception Type: ImportError
Exception Value:    
No module named Crypto
Exception Location: /home/*************/project/app/models.py in <module>, line 1
Python Executable:  /home/*************/env/bin/python
Python Version: 2.6.6
Python Path:    
['/usr/local/dh/passenger/lib/phusion_passenger/wsgi',
 '/home/*************/env/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg',
 '/home/*************/env/lib/python2.6/site-packages/pip-0.7.2-py2.6.egg',
 '/home/*************/env/src/django-debug-toolbar',
 '/home/*************/env/lib/python2.6',
 '/home/*************/env/lib/python2.6/plat-linux2',
 '/home/*************/env/lib/python2.6/lib-tk',
 '/home/*************/env/lib/python2.6/lib-old',
 '/home/*************/env/lib/python2.6/lib-dynload',
 '/usr/lib/python2.6',
 '/usr/lib64/python2.6',
 '/usr/lib/python2.6/plat-linux2',
 '/usr/lib/python2.6/lib-tk',
 '/usr/lib64/python2.6/lib-tk',
 '/home/*************/env/lib/python2.6/site-packages',
 '/home/*************',
 '/home/*************/project']
Server time:    Tue, 3 Jan 2012 20:08:19 +1100
4

1 回答 1

0

在导致导入错误的行之前插入以下代码:

import sys
assert False, sys.path

比较两个结果。

在外壳中(您可以在其中导入模块)。你可以这样做:

import Crypto
assert False, Crypto.__file__

此结果的目录是否在您的网络服务器的 sys.path 中?

于 2012-01-04T11:56:59.857 回答