Domanda

Quindi apro un terminale, cd sul mio desktop ed eseguo:

virtualenv test_env

Creo quindi il seguente file nel mio ambiente normale:

/home/jesse/.local/lib/python2.6/site-packages/foo_package / __ init __. Py

Questo file contiene una riga:

stampa " importazione da ambiente normale "

Nel test_env creo:

/home/jesse/Desktop/test_env/lib/python2.6/site-packages/foo_package / __ init __. Py

contenenti:

stampa " importazione da test env "

Ora apro un terminale ed eseguo:

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

E poi fai:

> > > import foo_package

Quali output:

importazione da normale ambiente

Perché non importa il file da test_env? Ho pensato che fosse questo il punto di virtualenv. Mi sto perdendo qualcosa qui?

Modifica: Jon H mi ha informato che devo attivare l'ambiente. Ma questo non sembra risolvere il 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
>>> 

Usare Ubuntu 9.04 / Python 2.6.2 / virtualenv 1.33 nel caso sia rilevante.

Modifica 2: Haes mi ha chiesto quale sia il percorso sys.path nella mia 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

Output: ['', '/home/jesse/Desktop/test_env/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg', '/usr/local/lib/python2.6/dist- pacchetti / 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-pacchetti / 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 / l ib / python2.6 / dist-pacchetti / 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/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-pacchetti ',' /usr/lib/python2.6/dist-packages ',' /usr/lib/python2.6/dist-packages/Numeric ',

È stato utile?

Soluzione

Stai riscontrando un bug in virtualenv. Non è stato ancora aggiornato per gestire correttamente le directory .local. Ho presentato un problema per questo al bug tracker .

AGGIORNAMENTO : questo bug ora è stato risolto in virtualenv 1.4.2 e successive.

Altri suggerimenti

Dai passaggi che hai citato, sembra che tu non abbia attivato l'ambiente virtuale. Do:

source bin/activate

.. nella virtualenv che hai creato. Dovresti vedere qualcosa del tipo:

(test_env)computername:foldername$

L'esecuzione di python da qui dovrebbe ottenere la versione di virtualenv.

Senza questo passaggio, verrà comunque utilizzata l'installazione Python predefinita.

Modifica: il post sopra di me è corretto, hai dimenticato di attivare. Usando virtualenvwrapper non ho mai fatto questo passo, quindi il mio male :)

Guardando quello, sembra che tu stia facendo tutto nel modo giusto, ma vorrei fare un suggerimento nel caso in cui non ne avessi mai sentito parlare: virtualenvwrapper rende il lavoro con virtualenv molto più semplice e veloce. Potrebbe essere divertente provarlo e vedere se hai ancora lo stesso problema, forse troverai quello che ti perdevi.

E devi creare l'ambiente virtuale con l'opzione --no-site-pacchetti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top