Ошибка импорта с помощью virtualenv - PullRequest
9 голосов
/ 15 декабря 2009

У меня проблема с virtualenv. Я использую это регулярно, я использую это на своей машине разработки и на нескольких серверах. Но на этом последнем сервере, который я пытался использовать, у меня возникла проблема.

Я создал virtualenv с аргументом --no-site-packages, а затем установил несколько модулей python внутри virtualenv. Я могу подтвердить, что модули находятся внутри site-пакетов virtualenvs и все вроде бы нормально.

Но когда я пытаюсь сделать: source virtualenv/bin/activate и затем импортировать один из модулей python import modulename, я получаю ошибку импорта, которая говорит о том, что модуль не существует. Как случилось, что это происходит? Кажется, что он никогда не активирует, даже если он говорит, что делает.

Кто-нибудь знает, как это исправить?

Ответы [ 3 ]

16 голосов
/ 15 декабря 2009

Есть ли на этой машине активный псевдоним bash для "python"? Это будет иметь приоритет перед PATH-модификациями, сделанными активацией, и может привести к использованию неправильного двоичного файла Python.

Попробуйте запустить virtualenv / bin / python напрямую (не нужно активировать) и посмотрите, сможете ли вы импортировать свой модуль.

Если это исправит это, вам просто нужно избавиться от псевдонима python bash.

8 голосов
/ 16 декабря 2009

После активации виртуальной среды попробуйте:

$ python
>>> import sys
>>> sys.executable
...

... и посмотрите, запускаете ли вы ожидаемый исполняемый файл.

Также проверьте:

>>> sys.path
[...]
0 голосов
/ 15 декабря 2009

IIRC, скрипт активации просто ставит ваш виртуальный env первым на ваш путь, поэтому, когда вы набираете "python", он сначала находит тот, который находится в вашем виртуальном env. Если скрипт активации не удался, вы всегда можете отредактировать ваш путь вручную. Кроме того - перейдите сюда и выполните поиск по запросу «activ»: http://pylonsbook.com/en/1.1/installing-pylons.html#setting-up-a-virtual-python-environment. Это скажет вам, почему команда активации может завершиться неудачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...