Django не загружает модуль Pycrypto в модель, загружается в оболочку - PullRequest
1 голос
/ 04 января 2012

Я использую Virtualenv в моей установке Django и загрузил в Pycrypto, используя

pip install pycrypto

после получения моего окружения.

Когда я пытаюсь импортировать Crypto в мою модель, я получаю ошибку импорта, однако, если загрузить оболочку, используя

manage.py shell

загружается без проблем.

Я почти уверен, что django работает от virtualenv, так как он работает под управлением 1.3.1, который больше тока, чем установленный на пути, и я установил South через pip, который работает.

Я также пытался установить Pycrypto, используя

setup.py install

Есть мысли о том, как это исправить / отладить?

Спасибо

Edit: Я относительно новичок в Django и Python, так что это может быть что-то простое

Редактировать 2: Привет Иссак,

Есть ли способ найти все загружаемые модули?

Я не понимаю, почему это не будет работать в браузере, но будет работать в интерактивной оболочке? Я не говорю, что это невозможно, я просто не знаю, могло ли это произойти.

Ошибка импорта в соответствии с запросом:

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

1 Ответ

0 голосов
/ 04 января 2012

Непосредственно перед строкой, которая вызывает ошибку импорта, вставьте этот код:

import sys
assert False, sys.path

Сравните оба результата.

В оболочке (где вы можете импортировать модуль).Вы можете сделать это:

import Crypto
assert False, Crypto.__file__

Каталог этого результата - sys.path вашего веб-сервера?

...