2009-10-26 2 views
4

Так что открыть терминал, компакт-диск на моем рабочем столе, и запустите:virtualenv путаница

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

Какие выходы:

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

Редактировать: Jon H сообщил мне, что мне нужно активировать среду. Но это не похоже, чтобы решить эту проблему ...

[email protected]:~/Desktop/test_env$ source bin/activate 
(test_env)[email protected]:~/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 в случае, если релевантно.

Edit 2: Haes спросил меня, что sys.path был в моем virtualenv ...

[email protected]:~/Desktop/test_env$ source bin/activate 
(test_env)[email protected]:~/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 

Выход: [ '', «/ дом/Jesse/Desktop/test_env/Библиотека/python2 .6/site-packages/setuptools-0.6c9-py2.6.egg ',' /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', '/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 ',' /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-юникода ']

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

[email protected]:~/Desktop/test_env$ source bin/activate 
(test_env)[email protected]:~/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. Я попробовал это. Та же проблема.

[email protected]:~/Desktop/test_env$ source bin/activate 
(test_env)[email protected]:~/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'] 
>>> 

Опять же, это выглядит как проблема является сайт-пакеты в моем «Местный» появится в начале пути, чем сайт-пакеты в „test_env“.

+1

Что sys.path установлен в вашем virtualenv? – Haes

+0

Я добавил эту информацию выше, см. Редактировать 2. –

ответ

6

Вы бежите на ошибку в virtualenv. Он еще не обновлен для правильного управления локальными каталогами. Я подал an issue for this at the bug tracker.

ОБНОВЛЕНИЕ: эта ошибка is now fixed в virtualenv 1.4.2 и новее.

0

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

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

+0

virtualenvwrapper выглядит круто. Но даже при этом у меня та же проблема: \ –

2

С тех пор, как вы упомянули, кажется, что вы не активировали виртуальный env. Do:

source bin/activate 

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

(test_env)computername:foldername$ 

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

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

+0

У меня все еще такая же проблема, см. Выше edit. –

0

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

+0

Пробовал это, такой же проблема. См. Редактирование № 4. –

+0

Не могли бы вы использовать pprint из модуля pprint, чтобы получить вертикальный список sys.path? Легче видеть результат. – Roger

+0

И выберите интерпретатор python, чьи пакеты сайта, которые вы хотите предотвратить, отображаются в sys.path с помощью опции -python при создании виртуальной среды. – Roger