Pergunta
Então eu abrir um terminal, cd para o meu desktop, e executar:
virtualenv test_env
Eu, então, criar o seguinte arquivo no meu ambiente normal:
/home/jesse/.local/lib/python2.6/site-packages/foo_package/__init__.py
Este arquivo contém uma linha:
print "importing from normal env"
No test_env eu crio:
/home/jesse/Desktop/test_env/lib/python2.6/site-packages/foo_package/__init__.py
Contendo:
print "importing from test env"
Agora eu abro uma corrida terminal e:
$ /home/jesse/Desktop/test_env/bin/python
E, em seguida, fazer:
>>> import foo_package
Que resultados:
importing from normal env
Por que não é mesmo importar o arquivo de test_env? Eu pensei que era o ponto inteiro de virtualenv. Estou faltando alguma coisa aqui?
Editar: Jon H informou-me que eu preciso ativar o ambiente. Mas isso não parece resolver o problema ...
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
>>>
Usando Ubuntu 9.04 / Python 2.6.2 / virtualenv 1,33 no caso em que é relevante.
Editar 2: Haes me perguntou o que sys.path estava na minha 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
Saída: [ '', '/Home/jesse/Desktop/test_env/lib/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,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 / l ib / 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 / / lib locais /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. ovo ' '/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/virtualenvwra pper-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 0,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 ']
Editar 3: Eu encontrei este: https://bugs.launchpad.net/ubuntu/+source/python-virtualenv/+bug/339904 Aparentemente, há alguns problemas com virtualenv + Python 2.6 + ubuntu 9.04. Não tenho certeza se isso está relacionado com o meu problema ... Eu tentei desinstalar o pacote python-virtualenv via Synaptic e, em seguida, instalar a versão 1.3.4 do virtualenv via easy_install, mas ainda tem o mesmo problema ...
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']
Isto parece um passo em frente, porque o material test_env
está aparecendo no caminho, mas ainda não está funcionando. Eu acho que o meu problema atual é que '/home/jesse/.local/lib/python2.6/site-packages' ocorre no caminho antes de '/home/jesse/Desktop/test_env/lib/python2.6/site-packages '
Editar 4: Roger sugeriu a criação do env com a opção --no-site-packages. Tentei fazer isso. Mesmo problema.
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']
>>>
Mais uma vez, parece que o problema é o site de pacotes no meu ".local" aparece no início do caminho do que os site-packages em 'test_env'.
Solução
Você está correndo em um bug no virtualenv. Ele ainda não foi atualizado para lidar com diretórios .local corretamente. Eu arquivado um problema para isso no bug tracker .
Atualizar : este bug agora é fixo em virtualenv 1.4.2 e posterior.
Outras dicas
A partir dos passos que você mencionou, parece que você não tenha ativado o env virtual. Fazer:
source bin/activate
.. dentro do virtualenv você criou. Você deve ver algo como:
(test_env)computername:foldername$
Running python a partir daqui deve obter a sua versão virtualenv.
Sem essa etapa ainda vai usar a sua instalação padrão Python.
Editar: Post acima de mim está correta, você se esqueceu de ativar. Usando virtualenvwrapper Eu realmente nunca fiz isso passo para o meu mau:)
Olhando para isso, parece que você está fazendo tudo certo, mas eu gostaria de fazer uma sugestão no caso de você nunca ouviu falar dele: virtualenvwrapper torna o trabalho com virtualenv muito mais rápido e mais fácil. Poderia ser divertido para experimentá-lo e ver se você ainda obter o mesmo problema, talvez você vai encontrar o que você estava faltando.
E o que você precisa para criar o ambiente virtual com a opção --no-site-pacotes