2013-04-29 11 views
7

Ich benutze virtualenv 1.9.1 auf Cygwin unter Win 7. Jeder virtualenv wird ohne Optionen (außer dem Verzeichnisnamen, offensichtlich) erstellt. Es gibt keine ausgefallenen Anpassungen.virtualenv erstellt nicht PYTHONPATH/pip installierte Pakete funktionieren nicht

Alle virtualenvs sind frisch, in dem Sinne, dass ich keine Wrapper-Skripte erstellt habe, noch irgendwelche der virtualenv-Skripte bearbeitet. Ich bin mir absolut sicher, dass ich nichts Spezielles tue (d. H. Anderes als missbrauchen virtualenv, anstatt Maßnahmen zu ergreifen, die seine Operation frustrieren), die PYTHONPATH in mehreren virtualenv abwesend verursacht.

Das virtualenv Aktivierungsskript für jeden neuen virtualenv erstellt keinen PYTHONPATH. pip installiert Pakete unter $VIRTUAL_ENV/lib/python2.7/site-packages/<packagedir> (z. B. lib/python2.7/site-packages/html5lib).

Pip Verhalten scheint wünschenswert. Das Ausführen von Python (nach dem Aktivieren des Virtualenv) führt jedoch dazu, dass keine pip-installierten Pakete ladbar sind (d. H. "Kein Modul namens ...").

Update: Das Hinzufügen eines PYTHONPATH zu activate löst tatsächlich das Problem. Offensichtlich möchte ich dies weder manuell pflegen, noch activate_this.py aktualisieren müssen. Ich würde immer noch gerne wissen, warum virtualenvs jetzt nicht direkt aus der Box funktionieren.

Was ist die Lösung? Virtualenv hat das nie getan. Was ist jetzt los?

Update 2: Hier ist der Ausgang des laufenden virtualenv mit -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

Hässliche Lösung: vielleicht hacken Sie das Skript 'activate' und fügen Sie den Pfad manuell hinzu? –

+0

@JakubM. Das ist mir aufgefallen, aber das scheint entweder zu sein, dass ich nicht etwas anderes Offensichtliches mache, oder einen Bug in der aktuellen Version von virtualenv. – Marcin

+0

'PYTHONPATH' ist ein roter Hering. Es wird ** nicht ** durch 'activate' festgelegt. Das ist es nie. Die ausführbare Python-Datei in 'bin/python.exe' ist dafür verantwortlich, stattdessen' PYTHONHOME' (intern) zu setzen. Kannst du 'virtualenv -vv' (also zwei' -v' Optionen) ausführen und uns diese Debug-Ausgabe in deiner Frage zeigen, um uns beim Debuggen des Problems zu helfen? –

Antwort

1

Ich bin auf Win7, mit Cygwin Python. Ich habe easy_install mit this installiert. Dann Pip, dann virtualenv. Dann lief virtualenv newve, dann source newve/bin/activate, dann installiert pip ein Paket (IPython). Alles funktioniert gut. Ich kann von Python REPL importieren, und das Programm funktioniert, und die Pfade sind richtig eingestellt. Und PYTHONPATH ist nie irgendwo eingestellt. Ich bin ratlos.

Versuchen Sie, alles neu zu installieren?

Edit:

Fand heraus easy_install ist in der Cygwin-Paket python-setuptools zur Verfügung.

+0

Ich habe tatsächlich die Version direkt von Pypi anstelle der Python-Setuptools heruntergeladen, wenn ich neu installiert. Ich weiß nicht, ob das der Schuldige ist oder nicht. – Marcin

0

Das einzige, was ich denken kann, ist, dass PYTHONPATH bereits gesetzt ist. Da Cygwin alle Umgebungsvariablen von Windows erbt, wird, wenn PYTHONPATH bereits gesetzt ist, virtualenv dieses anstelle des richtigen Verzeichnisses verwenden. Überprüfen Sie, ob unter Windows PYTHONPATH bereits festgelegt ist. Wenn ja, löschen Sie es und versuchen Sie es erneut mit virtualenv. Überprüfen Sie auch Ihre .bashrc-Datei, um zu sehen, ob PYTHONPATH dort eingestellt ist. Warum können Sie das normale Python für Windows nicht verwenden? Schreiben Sie ein POSIX-Skript?

+0

Um es klar zu stellen: PYTHONPATH fehlt. Es ist nicht in der Umgebung festgelegt. Ich benutze Cygwin, weil ich Cygwin lieber als Entwicklungsumgebung benutze. – Marcin

+0

@Marcin: Hmm ... seltsam. Können Sie versuchen zu sehen, ob es überhaupt in Windows funktioniert? Wenn ja, dann wissen wir, dass es ein Problem in Cygwin oder Cygwin Python ist. Wenn nicht, dann bin ich total ahnungslos. Sie können 'sys.path.append' immer verwenden, wenn alles andere fehlschlägt. – refi64

+0

Ich benutze Windows. Cygwin ist Fenster. – Marcin

Verwandte Themen