Virtualenv: Problème avec une voiture non ASCII dans le chemin

Créé le 29 juil. 2013  ·  20Commentaires  ·  Source: pypa/virtualenv

Je ne sais pas si cela est lié à # 186 mais avec ma nouvelle installation de python sur mon Windows 8, j'ai l'erreur suivante lors de l'utilisation de virtualenv dans le chemin C: \ 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
liste pip
nez (1.3.0)
pip (1,4)
Échafaudage (0.1.3)
setuptools (0.9.7)
virtualenv (1.10)

Éditer:

bug help-wanted

Commentaire le plus utile

Cela a maintenant été corrigé, tant que le codec du système de fichiers peut le gérer, nous le gérerons aussi 👍 sinon nous afficherons le message d'erreur approprié 👍 Sous windows pre python3.6 cela implique le codec mcbs 👍 dans tous les cas ultérieurs, nous parlons de utf-8.

Tous les 20 commentaires

Bonjour,
Vous avez exactement le même problème ici avec:
python v2.7.5
Win7 64 bits
Peut être reproduit à volonté

Ressemble à # 453

Ce problème se produit également sur Mac OS X 10.8.4 avec Python v2.7.2:

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

La requête d'extraction # 187 a mentionné que quelque chose à propos de l'encodage FS diffère de l'encodage par défaut. La configuration du système le résoudrait probablement?

Le correctif d'Atykhonov fonctionne pour moi.

Bosse. Aucun progrès? @atykhonov Que diriez-vous d'envoyer votre patch sous forme de pull requests?

Idem. Le problème se produit également sous Linux, ici avec des caractères chinois:

$ 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.
>>> 

J'ai un correctif WIP pour ce problème, alors que les choses ne peuvent pas être faites avant que le bogue de https://bitbucket.org/pypa/distlib/pull-requests/27 ne soit corrigé.

@ yan12125 - Je ne sais pas si votre PR est correct, voir mes commentaires à ce sujet. De plus, il n'est pas clair que le vidage de la console ci-dessus soit lié au problème distlib - il semble être un bogue différent dans virtualenv qui est invoqué lors du test que le venv a été créé correctement.

Il y a beaucoup de pull requests essayant de résoudre ceci:

  • # 900 (# 875): ouvert par moi, tous les tests ont réussi
  • # 902 (# 894): ouvert par @aodag
  • # 907 (# 453): ouvert par @magres
  • # 908 (# 492): ouvert par @atykhonov
  • # 912 (# 630): ouvert par @dholth

Je suppose qu'un environnement de test Windows comme Appveyor est également nécessaire. pypa / pip l' utilise déjà .

FI, j'ai eu la même erreur sur Debian GNU / Linux 9.2, Python 2.7.14.

% 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.

Pour tout ce que ça vaut, je peux reproduire ce problème sur Windows 7, Python 3.6.4, virtualenv 15.1.0, lorsque je travaille sous un compte utilisateur avec un nom d'utilisateur commençant par $ .

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 : cela ressemble à un problème différent de celui des caractères chinois ou des espaces dans le chemin. Pouvez-vous ouvrir un nouveau numéro?

BTW, venv est également affecté, et ce serait génial si un problème est ouvert sur https://bugs.python.org/ pour venv également.

@philosophicles Ce n'est peut-être pas un bogue - cela semble se produire parce que distutils voit $cuthbertson comme espace réservé et essaie de le remplacer par une variable, qui n'est pas trouvée. Consultez cette partie de la documentation .

Je vais soulever des questions distinctes (à la fois dans virtualenv et venv) pour mon problème actuellement.

@vsajip - mon avis est que c'est définitivement un bug. J'ai regardé la documentation à laquelle vous faites référence, mais c'est une référence d'API pour quelqu'un qui développe à l'aide de distutils. J'essaie juste d'exécuter une commande simple comme > python -m virtualenv . sous Windows, et je rencontre une erreur fatale qui empêche virtualenv de faire ce qu'il est censé faire. Je ne devrais pas avoir à me soucier du tout de l'implémentation interne de virtualenv, ou du fonctionnement de distutils, ou même du chemin complet de mon répertoire. Il est légitime que les chemins de répertoire Windows contiennent $ , ils devraient donc idéalement être pris en charge.

Ce problème a été automatiquement marqué comme obsolète car il n'a pas eu d'activité récente. Il sera fermé si aucune autre activité n'a lieu. Ajoutez simplement un commentaire si vous souhaitez le garder ouvert. Merci pour vos contributions.

@stale a fermé ça ... mais ping. C'est toujours un bug ... mais ça va si ce n'est pas corrigé sur 2.7.x ... j'ai juste besoin de savoir

Cela a maintenant été corrigé, tant que le codec du système de fichiers peut le gérer, nous le gérerons aussi 👍 sinon nous afficherons le message d'erreur approprié 👍 Sous windows pre python3.6 cela implique le codec mcbs 👍 dans tous les cas ultérieurs, nous parlons de utf-8.

@gaborbernat Merci ++

Salut @gaborbernat , ce problème est-il résolu dans la dernière branche principale?
J'ai utilisé la branche principale et j'ai eu des erreurs similaires au numéro 1375 .
sinon, je peux créer un PR pour résoudre ce problème.

Pas dans la branche master, mais dans la branche rewrite qui remplacera bientôt master.

OK, merci pour votre réponse.

Cette page vous a été utile?
0 / 5 - 0 notes