Virtualenv: Problem mit Nicht-ASCII-Auto im Pfad

Erstellt am 29. Juli 2013  ·  20Kommentare  ·  Quelle: pypa/virtualenv

Ich weiß nicht, ob dies mit # 186 zusammenhängt, aber bei meiner Neuinstallation von Python unter Windows 8 tritt bei Verwendung von virtualenv im Pfad C der folgende Fehler auf: \ Users \ oncleben \ Dropbox \ Developement \ fraisDeSanté

C:\Users\oncleben\Dropbox\Developement\fraisDeSanté> virtualenv ENV
New python executable in ENV\Scripts\python.exe
Traceback (most recent call last):
  File "<string>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 50: ordinal not in range(128)
ERROR: The executable ENV\Scripts\python.exe is not functioning
ERROR: It thinks sys.prefix is u'c:\\users\\oncleben\\dropbox\\developement\\fraisdesant\xe9' (should be u'c:\\users\\on
cleben\\dropbox\\developement\\fraisdesant\xe9\\env')
ERROR: virtualenv is not compatible with this system or executable
Note: some Windows users have reported this error when they installed Python for "Only this user" or have multiple versi
ons of Python installed. Copying the appropriate PythonXX.dll to the virtualenv Scripts/ directory may fix this problem.

Python v2.7.5
Pip-Liste
Nase (1.3.0)
pip (1.4)
Gerüst (0.1.3)
Setuptools (0.9.7)
virtualenv (1.10)

Bearbeiten:

bug help-wanted

Hilfreichster Kommentar

Dies wurde jetzt behoben, solange der Dateisystem-Codec damit umgehen kann, werden wir es auch behandeln. Wenn nicht, werden wir die entsprechende Fehlermeldung auslösen. Unter Windows vor Python3.6 impliziert dies in allen späteren Fällen den mcbs-Codec Ich spreche von utf-8.

Alle 20 Kommentare

Hallo,
Habe hier genau das gleiche Problem mit:
Python v2.7.5
Win7 64bit
Kann nach Belieben reproduziert werden

Sieht aus wie # 453

Dieses Problem tritt auch unter Mac OS X 10.8.4 mit Python v2.7.2 auf:

New python executable in venv/bin/python
Traceback (most recent call last):
  File "<string>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 16: ordinal not in range(128)
ERROR: The executable venv/bin/python is not functioning
ERROR: It thinks sys.prefix is u'/Users/RSChiang/\u539f\u59cb\u78bc/repo' (should be u'/Users/RSChiang/\u539f\u59cb\u78bc/repo/venv')
ERROR: virtualenv is not compatible with this system or executable

Die Pull-Anfrage Nr. 187, in der etwas über die FS-Codierung erwähnt wurde, unterscheidet sich von der Standardcodierung. Wahrscheinlich würde die Systemkonfiguration das Problem lösen?

Atykhonovs Fix funktioniert bei mir.

Stoßen. Irgendein Fortschritt? @atykhonov Wie wäre es, Anfrage senden?

Das Gleiche gilt. Problem tritt auch unter Linux auf, hier mit chinesischen Schriftzeichen:

$ virtualenv /tmp/中文
New python executable in /tmp/中文/bin/python
Traceback (most recent call last):
  File "<string>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 5: ordinal not in range(128)
ERROR: The executable /tmp/中文/bin/python is not functioning
ERROR: It thinks sys.prefix is u'/home/vinay/projects/scratch' (should be u'/tmp/\u4e2d\u6587')
ERROR: virtualenv is not compatible with this system or executable
vinay<strong i="6">@ubuntu</strong>:~/projects/scratch$ virtualenv --version
13.1.2
vinay<strong i="7">@ubuntu</strong>:~/projects/scratch$ /tmp/中文/bin/python
Python 2.7.10 (default, Oct 14 2015, 16:09:02) 
[GCC 5.2.1 20151010] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Ich habe einen WIP-Patch für dieses Problem, während Dinge nicht erledigt werden können, bevor der Fehler in https://bitbucket.org/pypa/distlib/pull-requests/27 behoben ist.

@ yan12125 - Ich bin nicht sicher, ob Ihre PR korrekt ist, siehe meine Kommentare dazu. Es ist auch nicht klar, dass sich der obige Konsolendump auf das Problem distlib bezieht - es scheint ein anderer Fehler in virtualenv der beim Testen der korrekten Erstellung des Venv aufgerufen wird.

Es gibt viele Pull-Anfragen, die versuchen, dies zu lösen:

  • # 900 (# 875): Von mir geöffnet, alle Tests bestanden
  • # 902 (# 894): geöffnet von @aodag
  • # 907 (# 453): geöffnet von @magres
  • # 908 (# 492): eröffnet von @atykhonov
  • # 912 (# 630): geöffnet von @dholth

Ich denke, eine Windows-Testumgebung wie Appveyor ist ebenfalls erforderlich. pypa / pip benutzt es bereits .

FI, ich habe den gleichen Fehler unter Debian GNU / Linux 9.2, Python 2.7.14 erhalten.

% pwd
/home/tiger-222/Téléchargements

Python 2:

% python2 -m pip install --user --upgrade virtualenv
Collecting virtualenv
  Using cached virtualenv-15.1.0-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0

% python2 -m virtualenv test-python2   
New python executable in /home/tiger-222/Téléchargements/test-python2/bin/python2
Also creating executable in /home/tiger-222/Téléchargements/test-python2/bin/python
Traceback (most recent call last):
  File "<string>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 17: ordinal not in range(128)
ERROR: The executable /home/tiger-222/Téléchargements/test-python2/bin/python2 is not functioning
ERROR: It thinks sys.prefix is u'/home/tiger-222/T\xe9l\xe9chargements' (should be u'/home/tiger-222/T\xe9l\xe9chargements/test-python2')
ERROR: virtualenv is not compatible with this system or executable

Python 3:

% python3 -m pip install --user --upgrade virtualenv
Collecting virtualenv
  Using cached virtualenv-15.1.0-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0

% python3 -m virtualenv test-python3
Using base prefix '/usr'
New python executable in /home/tiger-222/Téléchargements/test-python3/bin/python3
Also creating executable in /home/tiger-222/Téléchargements/test-python3/bin/python
Installing setuptools, pip, wheel...done.

Was auch immer es wert ist, ich kann dieses Problem unter Windows 7, Python 3.6.4, virtualenv 15.1.0 reproduzieren, wenn ich unter einem Benutzerkonto mit einem Benutzernamen arbeite, der mit $ beginnt.

PS C:\Users\$scuthbertson\Desktop\bugtest> python -m virtualenv .
Using base prefix 'C:\\Program Files\\Python36'
New python executable in C:\Users\$scuthbertson\Desktop\bugtest\Scripts\python.exe
Installing setuptools, pip, wheel...
  Complete output from command C:\Users\$scuthberts...t\Scripts\python.exe - setuptools pip wheel:
  Collecting setuptools
  Using cached setuptools-39.0.1-py2.py3-none-any.whl
Collecting pip
  Using cached pip-9.0.3-py2.py3-none-any.whl
Collecting wheel
  Using cached wheel-0.30.0-py2.py3-none-any.whl
Installing collected packages: setuptools, pip, wheel
Exception:
Traceback (most recent call last):
  File "C:\Program Files\Python36\Lib\distutils\util.py", line 202, in subst_vars
    return re.sub(r'\$([a-zA-Z_][a-zA-Z_0-9]*)', _subst, s)
  File "C:\Users\$scuthbertson\Desktop\bugtest\lib\re.py", line 191, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "C:\Program Files\Python36\Lib\distutils\util.py", line 199, in _subst
    return os.environ[var_name]
  File "C:\Users\$scuthbertson\Desktop\bugtest\lib\os.py", line 669, in __getitem__
    raise KeyError(key) from None
KeyError: 'scuthbertson'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\Python36\lib\site-packages\virtualenv_support\pip-9.0.1-py2.py3-none-any.whl\pip\basecommand.py
", line 215, in main
    status = self.run(options, args)
  File "C:\Program Files\Python36\lib\site-packages\virtualenv_support\pip-9.0.1-py2.py3-none-any.whl\pip\commands\insta
ll.py", line 342, in run
    prefix=options.prefix_path,
  File "C:\Program Files\Python36\lib\site-packages\virtualenv_support\pip-9.0.1-py2.py3-none-any.whl\pip\req\req_set.py
", line 784, in install
    **kwargs
  File "C:\Program Files\Python36\lib\site-packages\virtualenv_support\pip-9.0.1-py2.py3-none-any.whl\pip\req\req_instal
l.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "C:\Program Files\Python36\lib\site-packages\virtualenv_support\pip-9.0.1-py2.py3-none-any.whl\pip\req\req_instal
l.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "C:\Program Files\Python36\lib\site-packages\virtualenv_support\pip-9.0.1-py2.py3-none-any.whl\pip\wheel.py", lin
e 247, in move_wheel_files
    prefix=prefix,
  File "C:\Program Files\Python36\lib\site-packages\virtualenv_support\pip-9.0.1-py2.py3-none-any.whl\pip\locations.py",
 line 153, in distutils_scheme
    i.finalize_options()
  File "C:\Program Files\Python36\Lib\distutils\command\install.py", line 307, in finalize_options
    self.expand_basedirs()
  File "C:\Program Files\Python36\Lib\distutils\command\install.py", line 475, in expand_basedirs
    self._expand_attrs(['install_base', 'install_platbase', 'root'])
  File "C:\Program Files\Python36\Lib\distutils\command\install.py", line 469, in _expand_attrs
    val = subst_vars(val, self.config_vars)
  File "C:\Program Files\Python36\Lib\distutils\util.py", line 204, in subst_vars
    raise ValueError("invalid variable '$%s'" % var)
ValueError: invalid variable '$'scuthbertson''
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "C:\Program Files\Python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Program Files\Python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Program Files\Python36\lib\site-packages\virtualenv.py", line 2328, in <module>
    main()
  File "C:\Program Files\Python36\lib\site-packages\virtualenv.py", line 713, in main
    symlink=options.symlink)
  File "C:\Program Files\Python36\lib\site-packages\virtualenv.py", line 945, in create_environment
    download=download,
  File "C:\Program Files\Python36\lib\site-packages\virtualenv.py", line 901, in install_wheel
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
  File "C:\Program Files\Python36\lib\site-packages\virtualenv.py", line 797, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command C:\Users\$scuthberts...t\Scripts\python.exe - setuptools pip wheel failed with error code 2
PS C:\Users\$scuthbertson\Desktop\bugtest>

@philosophicles : Das sieht nach einem anderen Problem aus als chinesische Schriftzeichen oder Leerzeichen im Pfad. Könnten Sie eine neue Ausgabe eröffnen?

Übrigens ist auch venv betroffen, und es wäre großartig, wenn ein Problem auch für venv auf https://bugs.python.org/ geöffnet würde.

@philosophicles Dies ist möglicherweise kein Fehler - es scheint zu passieren, weil distutils $cuthbertson als Platzhalter sieht und versucht, ihn durch eine Variable zu ersetzen, die nicht gefunden wird. Siehe diesen Teil der Dokumentation .

Ich werde derzeit separate Probleme (sowohl in virtualenv als auch in venv) für mein Problem ansprechen.

@vsajip - meine Meinung ist, dass es definitiv ein Fehler ist. Ich habe mir die Dokumentation angesehen, auf die Sie verweisen, aber das ist eine API-Referenz für jemanden, der mit distutils entwickelt. Ich versuche nur, einen einfachen Befehl wie > python -m virtualenv . unter Windows auszuführen und stoße auf einen schwerwiegenden Fehler, der verhindert, dass virtualenv das tut, was es tun soll. Ich sollte mich überhaupt nicht um die interne Implementierung von virtualenv kümmern müssen, um die Funktionsweise von distutils oder sogar um meinen vollständigen Verzeichnispfad. Es ist legitim, dass Windows-Verzeichnispfade $ daher sollten sie im Idealfall unterstützt werden.

Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivitäten gab. Es wird geschlossen, wenn keine weitere Aktivität stattfindet. Fügen Sie einfach einen Kommentar hinzu, wenn Sie ihn offen halten möchten. Vielen Dank für Ihre Beiträge.

@stale schloss dies .... aber ping. Dies ist immer noch ein Fehler ... aber ich bin in Ordnung, wenn dies nicht auf 2.7.x behoben ist ... Ich muss es nur wissen

Dies wurde jetzt behoben, solange der Dateisystem-Codec damit umgehen kann, werden wir es auch behandeln. Wenn nicht, werden wir die entsprechende Fehlermeldung auslösen. Unter Windows vor Python3.6 impliziert dies in allen späteren Fällen den mcbs-Codec Ich spreche von utf-8.

@gaborbernat Danke ++

Hallo @gaborbernat , ist dieses Problem in der neuesten Hauptniederlassung behoben?
Ich habe den Hauptzweig verwendet und Fehler ähnlich wie bei Problem Nr. 1375 erhalten .
Wenn nicht, kann ich eine PR erstellen, um dieses Problem zu beheben.

Nicht im Hauptzweig, sondern im Zweig rewrite , der bald den Hauptzweig ersetzen wird.

OK, danke für deine Antwort.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen