2016-09-22 1 views
0

Ich habe Python 3.5 durch Anaconda auf dem OSX-System installiert. Nach der Installation und die virtuelle Umgebung zu aktivieren,kann Python 3.5 Interpreter für virtualenv nicht laden

virtualenv venv 
source venv/bin/activate 

Der Python-Version ist Python 2.7.10. Und während wir den Interpreter unserer Wahl in virtualenv laden dürfen, hat "/ usr/bin /" nur Ordner für Python 2.6 und 2.7. Nach dem Auffinden des Anaconda Python 3.5 Pfad (/Users/Username/anaconda/lib/python3.5) und versuchen, es zu laden,

for: virtualenv -p /Users/Username/anaconda/lib/python3.5 venv

gibt der Code eine [Errno 13] Zugriff verweigert

> Running virtualenv with interpreter /Users/Username/anaconda/lib/python3.5 
> Traceback (most recent call last): File "/usr/local/bin/virtualenv", 
> line 11, in <module> 
>  sys.exit(main()) File "/Library/Python/2.7/site-packages/virtualenv.py", line 790, in main 
>  popen = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env) File 
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", 
> line 710, in __init__ 
>  errread, errwrite) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", 
> line 1335, in _execute_child 
>  raise child_exception 
OSError: [Errno 13] Permission denied 

for: virtualenv -p /Users/Username/anaconda/bin/python3.5 venv

es eine andere Art von Fehler zu sein scheint ...

Running virtualenv with interpreter /Users/Username/anaconda/bin/python3.5 
Using base prefix '/Users/Username/anaconda' 
New python executable in venv/bin/python3.5 
Not overwriting existing python script venv/bin/python (you must use venv/bin/python3.5) 
ERROR: The executable venv/bin/python3.5 is not functioning 
ERROR: It thinks sys.prefix is '/Users/Username/.../targetfolder' (should be '/Users/Username/.../targetfolder/venv') 
ERROR: virtualenv is not compatible with this system or executable 
+0

Sie können die Option '-p' verwenden, um den Pfad zu Anacondas Python 3-Interpreter anzugeben. – edwinksl

+0

Anacondas Python wird normalerweise automatisch gefunden, zumindest auf Ubuntu. Wenn außerhalb des Virtualenv, verwendet "Python" den Anaconda Python? –

+0

Ja, wenn außerhalb von virtualenv verwendet es die Python 3.5. aber immer noch herauszufinden, wie man es in virtualenv laden ... –

Antwort

1
ERROR: The executable venv/bin/python3.5 is not functioning 
ERROR: It thinks sys.prefix is '/Users/Username/.../targetfolder' (should be '/Users/Username/.../targetfolder/venv') 
ERROR: virtualenv is not compatible with this system or executable 

Dieser Fehler tritt auf, wenn versucht wird, inkompatible Versionen von Python und dem virtualenv-Tool zu kombinieren. Ich weiß nicht genau, woher die Inkompatibilität kommt, aber ich weiß, wie ich es umgehen kann.

Ihren Pythons Unter der Annahme ist vernünftig funktional und letzte (sprich: 3.3 oder höher), dies sollte immer funktionieren:

/path/to/python3.5 -m venv venv 

Der erste Venv ist die venv module. Der zweite ist der Name des Verzeichnisses, in dem Sie ein virtualenv erstellen möchten. Dieser Befehl fordert Python auf, selbst ein virtualenv zu erstellen, anstatt auf ein Drittanbieter-Tool zuzugreifen. Daher können wir einigermaßen zuversichtlich sein, dass Python es richtig macht, und insbesondere, dass es nicht mit sich selbst inkompatibel ist.


Leider ist die Version von Python mit Anaconda installiert ist, kann nicht als „angemessen funktional“, weil it lacks ensurepip beschrieben. Das macht es unmöglich, dass das venv Modul pip in Ihren virtualenv bootstrappt. So müssen Sie Ihre Venv ohne Pip bauen, und dann manuell installieren:

/path/to/python3.5 -m venv --without-pip venv 

Dann laden und get-pip.py aus dem virtualenv laufen.

+0

Dank! Wie gesagt, ich bin auf Python 3.5 so sollte funktionieren ... unten sind die Ausgänge obwohl: Symlink '/Users/Username/anaconda/bin/python3.5' zu '/ Benutzer/Zielordner/venv/bin/python3 nicht symbolisieren .5 ', Fehler: Befehl' ['Zielpfad/venv/bin/python3.5', '-Im', '' '' '', '--upgrade', '--default-pip'] 'hat einen Nicht-Null-Ausgang zurückgegeben status -11 –

+0

Versuchen Sie es mit der '--copies' Flagge? Wenn das fehlschlägt, müssen Sie '--without-pip' verwenden, was ziemlich unpraktisch ist. – Kevin

+0

danke! Kannst du ein bisschen mehr ausarbeiten? ist '/pfad/zu/python3.5 -m venv venv --kopien' was meinst du? –

Verwandte Themen