2013-04-29 17 views
7

Sto usando virtualenv 1.9.1 su cygwin sotto win 7. Ogni virtualenv viene creato senza alcuna opzione (diversa dal nome della directory, ovviamente). Non ci sono personalizzazioni elaborate.virtualenv non crea pacchetti PYTHONPATH/pip installati non funzionano

Tutti i virtualenv sono freschi, nel senso che non ho creato alcun script di wrapper, né modificato alcuno degli script virtualenv. Sono assolutamente certo che non sto facendo nulla di speciale (ad eccezione dell'uso improprio di virtualenv, piuttosto che di un'azione che vanifica il suo funzionamento) che sta causando l'assenza di PYTHONPATH in più virtualenvs.

Lo script di attivazione virtualenv per ogni nuova virtualenv non crea un PYTHONPATH. pip installa i pacchetti sotto $VIRTUAL_ENV/lib/python2.7/site-packages/<packagedir> (ad esempio lib/python2.7/site-packages/html5lib).

comportamento del pip sembra auspicabile. Tuttavia, l'esecuzione di python (dopo l'attivazione di virtualenv) non rende possibile il caricamento di pacchetti installati tramite pip (ad esempio "nessun modulo denominato ...").

Aggiornamento: l'aggiunta di un PYTHONPATH a activate effettivamente "risolve" il problema. Ovviamente, non voglio mantenerlo manualmente, né aggiornare activate_this.py. Mi piacerebbe ancora sapere perché virtualenvs ora non funzionano immediatamente.

Qual è la soluzione? virtualenv non è mai stato usato per farlo. Cosa c'è di sbagliato in questo momento?

Aggiornamento 2: Ecco l'output di esecuzione virtualenv con -vv:

$ virtualenv -vv newvirtualenv 
Creating newvirtualenv/lib/python2.7 
Symlinking Python bootstrap modules 
    Symlinking newvirtualenv/lib/python2.7/config 
    Symlinking newvirtualenv/lib/python2.7/lib-dynload 
    Symlinking newvirtualenv/lib/python2.7/os.py 
    Ignoring built-in bootstrap module: posix 
    Symlinking newvirtualenv/lib/python2.7/posixpath.py 
    Cannot import bootstrap module: nt 
    Symlinking newvirtualenv/lib/python2.7/ntpath.py 
    Symlinking newvirtualenv/lib/python2.7/genericpath.py 
    Symlinking newvirtualenv/lib/python2.7/fnmatch.py 
    Symlinking newvirtualenv/lib/python2.7/locale.py 
    Symlinking newvirtualenv/lib/python2.7/encodings 
    Symlinking newvirtualenv/lib/python2.7/codecs.py 
    Symlinking newvirtualenv/lib/python2.7/stat.py 
    Symlinking newvirtualenv/lib/python2.7/UserDict.py 
    File newvirtualenv/lib/python2.7/lib-dynload/readline.dll already exists 
    Symlinking newvirtualenv/lib/python2.7/copy_reg.py 
    Symlinking newvirtualenv/lib/python2.7/types.py 
    Symlinking newvirtualenv/lib/python2.7/re.py 
    Symlinking newvirtualenv/lib/python2.7/sre.py 
    Symlinking newvirtualenv/lib/python2.7/sre_parse.py 
    Symlinking newvirtualenv/lib/python2.7/sre_constants.py 
    Symlinking newvirtualenv/lib/python2.7/sre_compile.py 
    File newvirtualenv/lib/python2.7/lib-dynload/zlib.dll already exists 
    Symlinking newvirtualenv/lib/python2.7/warnings.py 
    Symlinking newvirtualenv/lib/python2.7/linecache.py 
    Symlinking newvirtualenv/lib/python2.7/_abcoll.py 
    Symlinking newvirtualenv/lib/python2.7/abc.py 
    Symlinking newvirtualenv/lib/python2.7/_weakrefset.py 
Creating newvirtualenv/lib/python2.7/site-packages 
Writing newvirtualenv/lib/python2.7/site.py 
Writing newvirtualenv/lib/python2.7/orig-prefix.txt 
Writing newvirtualenv/lib/python2.7/no-global-site-packages.txt 
Creating parent directories for newvirtualenv/include 
Symlinking newvirtualenv/include/python2.7 
Creating newvirtualenv/bin 
New python executable in newvirtualenv/bin/python2.7 
Changed mode of newvirtualenv/bin/python2.7 to 0755 
Also creating executable in newvirtualenv/bin/python 
Changed mode of newvirtualenv/bin/python to 0755 
Testing executable with newvirtualenv/bin/python2.7 -c "import sys;out=sys.stdout;getattr(out, "buffer", out).write(sys.prefix.encode("utf-8"))" 
Got sys.prefix result: u'/cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv' 
Creating newvirtualenv/lib/python2.7/distutils 
Writing newvirtualenv/lib/python2.7/distutils/__init__.py 
Writing newvirtualenv/lib/python2.7/distutils/distutils.cfg 
Using existing setuptools egg: /usr/lib/python2.7/site-packages/virtualenv_support/setuptools-0.6c11-py2.7.egg 
Installing setuptools... 
    Running command /cygdrive/c/Users/ma...ualenv/bin/python2.7 -c "#!python 
\"\"\"Bootstra...sys.argv[1:]) 






" -v /usr/lib/python2.7/s...ols-0.6c11-py2.7.egg 
    Processing setuptools-0.6c11-py2.7.egg 
    Copying setuptools-0.6c11-py2.7.egg to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/lib/python2.7/site-packages 
    Adding setuptools 0.6c11 to easy-install.pth file 
    Saving /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/lib/python2.7/site-packages/easy-install.pth 
    Installing easy_install script to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin 
    changing mode of /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin/easy_install to 755 
    Installing easy_install-2.7 script to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin 
    changing mode of /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin/easy_install-2.7 to 755 

    Installed /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg 
    Processing dependencies for setuptools==0.6c11 
    Finished processing dependencies for setuptools==0.6c11 
...Installing setuptools...done. 
Installing existing pip-1.3.1.tar.gz distribution: /usr/lib/python2.7/site-packages/virtualenv_support/pip-1.3.1.tar.gz 
Installing pip... 
    Running command /cygdrive/c/Users/ma...ualenv/bin/python2.7 -x /cygdrive/c/Users/ma...env/bin/easy_install /usr/lib/python2.7/s...ort/pip-1.3.1.tar.gz 
    Processing pip-1.3.1.tar.gz 
    Running pip-1.3.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ZP_VIv/pip-1.3.1/egg-dist-tmp-H3XBh_ 
    warning: no files found matching '*.html' under directory 'docs' 
    warning: no previously-included files matching '*.txt' found under directory 'docs/_build' 
    no previously-included directories found matching 'docs/_build/_sources' 
    Adding pip 1.3.1 to easy-install.pth file 
    Installing pip script to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin 
    Installing pip-2.7 script to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin 

    Installed /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg 
    Processing dependencies for pip==1.3.1 
    Finished processing dependencies for pip==1.3.1 
...Installing pip...done. 
Writing newvirtualenv/bin/activate 
Writing newvirtualenv/bin/activate.fish 
Writing newvirtualenv/bin/activate_this.py 
Writing newvirtualenv/bin/activate.csh 
+0

Soluzione brutta: forse modificare lo script 'activate' e aggiungere il percorso manualmente? –

+0

@JakubM. Mi è venuto in mente, ma sembra che non sto facendo qualcosa di ovvio, o un bug nella versione corrente di virtualenv. – Marcin

+0

'PYTHONPATH' è un'aringa rossa. È ** non ** impostato da 'activate'. Non lo è mai. L'eseguibile python in 'bin/python.exe' è responsabile per l'impostazione di' PYTHONHOME' (internamente). Puoi eseguire 'virtualenv -vv' (quindi due opzioni' -v') e mostrarci questo output di debug nella tua domanda per aiutarci a risolvere il problema? –

risposta

1

Sono su Win7, con Cygwin's Python. Ho installato easy_install con this. Quindi pip, quindi virtualenv. Quindi è stato eseguito virtualenv newve, quindi source newve/bin/activate, quindi pip ha installato un pacchetto (IPython). Tutto funziona bene Posso importare da python REPL, e il programma funziona, e i percorsi sono impostati correttamente. E PYTHONPATH non si trova mai da nessuna parte. Sono in perdita.

Prova a reinstallare tutto?

Edit:

Scoperto easy_install è disponibile nel pacchetto Cygwin python-setuptools.

+0

In realtà ho usato la versione scaricata direttamente da pypi invece di python-setuptools quando ho reinstallato. Non so se questo è il colpevole o no. – Marcin

0

L'unica cosa che posso pensare è che PYTHONPATH è già impostato. Poiché Cygwin eredita tutte le variabili di ambiente di Windows, se PYTHONPATH è già impostato, virtualenv lo utilizzerà al posto della directory corretta. Verificare se in Windows PYTHONPATH è già impostato. Se lo è, eliminalo e prova di nuovo virtualenv. Controlla anche il tuo file .bashrc per vedere se PYTHONPATH è impostato lì. Perché non puoi usare il normale Python per Windows? Stai scrivendo uno script POSIX?

+0

Per essere chiari: PYTHONPATH è assente. Non è ambientato nell'ambiente. Sto usando cygwin perché preferisco usare cygwin come ambiente di sviluppo. – Marcin

+0

@Marcin: Hmm ... dispari. Puoi provare a vedere se funzionerà del tutto in Windows? Se è così, allora sappiamo che è un problema in Cygwin o Cygwin's Python. Se no, allora sono totalmente all'oscuro. Puoi sempre usare 'sys.path.append' se tutto il resto fallisce. – refi64

+0

Sto usando Windows. Cygwin è Windows. – Marcin

Problemi correlati