Вопрос
Итак, я открываю терминал, устанавливаю компакт-диск на свой рабочий стол и запускаю:
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