Вопрос

Итак, я открываю терминал, устанавливаю компакт-диск на свой рабочий стол и запускаю:

virtualenv test_env

Затем я создаю следующий файл в своей обычной среде:

/home/jesse/.local/lib/python2.6/site-packages/foo_package/__init__.py

Этот файл содержит одну строку:

print "importing from normal env"

В test_env я создаю:

/home/jesse/Desktop/test_env/lib/python2.6/site-packages/foo_package/__init__.py

Содержащий:

print "importing from test env"

Теперь я открываю терминал и запускаю:

$ /home/jesse/Desktop/test_env/bin/python

А затем делай:

>>> import foo_package

Какие результаты:

importing from normal env

Почему он не импортирует файл из test_env?Я думал, в этом весь смысл virtualenv.Я что-то здесь упускаю?

Редактировать: Джон Эйч сообщил мне, что мне нужно активировать окружение.Но это, похоже, не устраняет проблему...

jesse@jesse-laptop:~/Desktop/test_env$ source bin/activate
(test_env)jesse@jesse-laptop:~/Desktop/test_env$ bin/python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import foo_package
importing from normal env
>>> 

Используя Ubuntu 9.04 / Python 2.6.2 / virtualenv 1.33, если это уместно.

Правка 2: Хаес спросил меня, какой sys.path был в моем virtualenv...

jesse@jesse-laptop:~/Desktop/test_env$ source bin/activate
(test_env)jesse@jesse-laptop:~/Desktop/test_env$ bin/python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path

Выходной сигнал:[", '/дом/Джесси/рабочий стол/test_env/lib в/Вместо python2.6/сайт-пакеты/setuptools-0.6c9-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/перечисление-0.4.3-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/clonedigger-1.0.9_beta-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/сед-3.2.0-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/TraitsGUI-3.0.4-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/TraitsBackendWX-3.1.0-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/TraitsBackendQt-3.1.0-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/желток-0.4.1-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/pylint-0.18.0-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/logilab_astng-0.19.0-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/logilab_common-0.39.0-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/pudb-0.92.7-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/устройстве-1.0-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/ETSProjectTools-0.5.1-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/pydee-0.4.24-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/visionegg-1.2.1-py2.6-ОС Linux-i686 в.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/PyOpenGL-3.0.0c1-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/свист-0.2.6-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/pyinotify-0.8.6-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/svgbatch-0.1.9-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/pyglet-1.1.3-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/лептон-1.0b2-py2.6-ОС Linux-i686 в.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/веревка-0.9.2-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/пакет-2.0.9-py2.6-ОС Linux-i686 в.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/pymunk-0.8.4-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/cssutils-0.9.6-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/стройная-1.0.14-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/sympy-0.6.5-py2.6.яйцо', '/usr/местные/библиотека/вместо python2.6/дист-пакеты/virtualenvwrapper-1.20-py2.6.яйцо', '/дом/Джесси/рабочий стол/test_env/lib в/Вместо python2.6', '/дом/Джесси/рабочий стол/test_env/lib в/Вместо python2.6/плат-linux2', '/дом/Джесси/рабочий стол/test_env/lib в/Вместо python2.6 в/lib-ТК', '/дом/Джесси/рабочий стол/test_env/lib в/Вместо python2.6/Либ-старому', '/дом/Джесси/рабочий стол/test_env/lib в/Вместо python2.6 в/lib-dynload', '/УСР/Либ/вместо python2.6', '/УСР/Либ/вместо python2.6/плат-linux2', '/УСР/Либ/вместо python2.6 в/lib-ТК', '/дом/Джесси/.местные/библиотека/вместо python2.6/сайт-пакеты', '/дом/Джесси/рабочий стол/test_env/lib в/Вместо python2.6/сайт-пакеты', '/usr/местные/библиотека/вместо python2.6/дист-пакеты', '/УСР/Либ/вместо python2.6/дист-пакеты', '/УСР/Либ/вместо python2.6/дист-пакеты/числовое', '/УСР/Либ/вместо python2.6/дист-пакеты/Пиль', '/УСР/Либ/вместо python2.6/дист-пакеты/часы GST-0.10', '/ВАР/Либ/поддержки Python/вместо python2.6', '/УСР/Либ/вместо python2.6/дист-пакеты/на GTK-2.0', '/ВАР/Либ/поддержки Python/вместо python2.6/на GTK-2.0', '/УСР/Либ/вместо python2.6/дист-пакеты/серии WX-2.8-комплекта библиотек GTK2-Unicode с']

Правка 3: Я нашел это: https://bugs .launchpad.net/ubuntu/+source/python-virtualenv/+bug/339904 По-видимому, есть некоторые проблемы с virtualenv + python 2.6 + ubuntu 9.04.Не уверен, связано ли это с моей проблемой...Я попытался удалить пакет python-virtualenv через Synaptic, а затем установить версию 1.3.4 virtualenv через easy_install, но все еще сталкиваюсь с той же проблемой...

jesse@jesse-laptop:~/Desktop/test_env$ source bin/activate
(test_env)jesse@jesse-laptop:~/Desktop/test_env$ bin/python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import foo_package
importing from normal env
>>> import sys
>>> print sys.path
['', '/home/jesse/Desktop/test_env/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg', '/home/jesse/Desktop/test_env/lib/python2.6', '/home/jesse/Desktop/test_env/lib/python2.6/plat-linux2', '/home/jesse/Desktop/test_env/lib/python2.6/lib-tk', '/home/jesse/Desktop/test_env/lib/python2.6/lib-old', '/home/jesse/Desktop/test_env/lib/python2.6/lib-dynload', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/home/jesse/.local/lib/python2.6/site-packages', '/home/jesse/Desktop/test_env/lib/python2.6/site-packages', '/usr/local/lib/python2.6/dist-packages/enum-0.4.3-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/clonedigger-1.0.9_beta-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/ETS-3.2.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/TraitsGUI-3.0.4-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/TraitsBackendWX-3.1.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/TraitsBackendQt-3.1.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/yolk-0.4.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/pylint-0.18.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/logilab_astng-0.19.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/logilab_common-0.39.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/pudb-0.92.7-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Pygments-1.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/ETSProjectTools-0.5.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/pydee-0.4.24-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/visionegg-1.2.1-py2.6-linux-i686.egg', '/usr/local/lib/python2.6/dist-packages/PyOpenGL-3.0.0c1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Whoosh-0.2.6-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/pyinotify-0.8.6-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/svgbatch-0.1.9-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/pyglet-1.1.3-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/lepton-1.0b2-py2.6-linux-i686.egg', '/usr/local/lib/python2.6/dist-packages/rope-0.9.2-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/simplejson-2.0.9-py2.6-linux-i686.egg', '/usr/local/lib/python2.6/dist-packages/pymunk-0.8.4-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/cssutils-0.9.6-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Shapely-1.0.14-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/sympy-0.6.5-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/virtualenvwrapper-1.20-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/virtualenv-1.3.4-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/enum-0.4.3-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/ETS-3.2.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/yolk-0.4.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Whoosh-0.2.6-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/pyinotify-0.8.6-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/pyglet-1.1.3-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/simplejson-2.0.9-py2.6-linux-i686.egg', '/usr/local/lib/python2.6/site-packages', '/usr/local/lib/python2.6/site-packages/gtk-2.0', '/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/Numeric', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/var/lib/python-support/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/var/lib/python-support/python2.6/gtk-2.0', '/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode']

Это выглядит как шаг вперед, потому что test_env материал появляется на пути, но он по-прежнему не работает.Я думаю, что моя текущая проблема заключается в том, что '/home / jesse /.local/lib/python2.6/site-packages' встречается в пути перед '/home / jesse/Desktop / test_env /lib /python2.6 /site-packages'

Правка 4: Роджер предложил создать env с опцией --no-site-packages.Я пробовал это.Та же проблема.

jesse@jesse-laptop:~/Desktop/test_env$ source bin/activate
(test_env)jesse@jesse-laptop:~/Desktop/test_env$ bin/python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import foo_package
importing from normal env
>>> import sys
>>> sys.path
['', '/home/jesse/Desktop/test_env/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg', '/home/jesse/Desktop/test_env/lib/python2.6', '/home/jesse/Desktop/test_env/lib/python2.6/plat-linux2', '/home/jesse/Desktop/test_env/lib/python2.6/lib-tk', '/home/jesse/Desktop/test_env/lib/python2.6/lib-old', '/home/jesse/Desktop/test_env/lib/python2.6/lib-dynload', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/home/jesse/.local/lib/python2.6/site-packages', '/home/jesse/Desktop/test_env/lib/python2.6/site-packages']
>>> 

Опять же, похоже, проблема в том, что пакеты сайта в моем ".local" появляются в пути раньше, чем пакеты сайта в "test_env".

Это было полезно?

Решение

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

Обновить:этот баг теперь исправлено в virtualenv 1.4.2 и более поздних версиях.

Другие советы

Судя по шагам, которые вы упомянули, вы, похоже, не активировали виртуальную среду.Делай:

source bin/activate

..в созданной вами виртуальной среде.Вы должны увидеть что-то вроде:

(test_env)computername:foldername$

Запуск python отсюда должен получить вашу версию virtualenv.

Без этого шага он по-прежнему будет использовать вашу установку Python по умолчанию.

Редактировать:Сообщение выше меня верное, вы забыли активировать.Используя virtualenvwrapper, я на самом деле никогда не делал этого шага, так что моя вина :)

Глядя на это, кажется, что вы все делаете правильно, но я хотел бы внести предложение, если вы никогда об этом не слышали: virtualenvwrapper ( виртуальная оболочка ) делает работу с virtualenv намного быстрее и проще.Было бы забавно попробовать это и посмотреть, по-прежнему ли у вас возникает та же проблема, может быть, вы найдете то, чего вам не хватало.

И вам нужно создать виртуальную среду с опцией --no-site-packages

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top