Virtualenv: Проблема с автомобилем не ASCII в пути

Созданный на 29 июл. 2013  ·  20Комментарии  ·  Источник: pypa/virtualenv

Я не знаю, связано ли это с # 186, но с моей новой установкой python в моей Windows 8 возникла следующая ошибка при использовании virtualenv в пути 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
список пунктов
нос (1.3.0)
шип (1.4)
Эшафот (0.1.3)
setuptools (0.9.7)
virtualenv (1.10)

Редактировать:

bug help-wanted

Самый полезный комментарий

Теперь это исправлено, пока кодек файловой системы может с этим справиться, мы справимся и с этим 👍 если нет, мы выдадим соответствующее сообщение об ошибке 👍 В Windows до python3.6 это подразумевает кодек mcbs 👍 во всех последующих случаях мы говорим об УТФ-8.

Все 20 Комментарий

Здравствуйте,
Получил ту же проблему здесь:
Python v2.7.5
Win7 64-битная
Может быть воспроизведен по желанию

Похоже на # 453

Эта проблема возникает также в Mac OS X 10.8.4 с 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

В запросе на извлечение № 187 упоминалось, что кодировка FS отличается от кодировки по умолчанию. Возможно, это решит конфигурация системы?

У меня работает фикс атыхонова.

Удар. Какой-либо прогресс? @atykhonov Как насчет отправки патча в виде

То же. Проблема также возникает в Linux, здесь с китайскими символами:

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

У меня есть патч WIP для этой проблемы, но пока что ошибка в https://bitbucket.org/pypa/distlib/pull-requests/27 не будет исправлена, ничего нельзя сделать.

@ yan12125 - Я не уверен, что ваш PR правильный, посмотрите мои комментарии к нему. Кроме того, неясно, относится ли приведенный выше дамп консоли к проблеме distlib - похоже, это другая ошибка в virtualenv которая вызывается при проверке правильности создания venv.

Есть много запросов на вытягивание, пытающихся решить эту проблему:

  • # 900 (# 875): открыт мной, все тесты пройдены
  • # 902 (# 894): открыл @aodag
  • # 907 (# 453): открыл @magres
  • # 908 (# 492): открыл @atykhonov
  • # 912 (# 630): открыл @dholth

Думаю, также необходима среда тестирования Windows, такая как Appveyor. pypa / pip уже использует его .

FI, у меня такая же ошибка в 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.

Как бы то ни было, я могу воспроизвести эту проблему в Windows 7, Python 3.6.4, virtualenv 15.1.0 при работе под учетной записью пользователя с именем пользователя, начинающимся с $ .

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 : это похоже на другую проблему, чем китайские символы или пробелы в пути. Не могли бы вы открыть новый выпуск?

Кстати, Venv также затронут, и было бы здорово, если бы проблема была открыта на https://bugs.python.org/ и для venv.

@philosophicles Возможно, это не ошибка - похоже, это происходит потому, что distutils видит $cuthbertson в качестве заполнителя и пытается заменить его переменной, которая не найдена. См. Эту часть документации .

Сейчас я подниму отдельные вопросы (как в virtualenv, так и в venv) для моей проблемы.

@vsajip - я считаю, что это определенно ошибка. Я просмотрел документацию, на которую вы ссылаетесь, но это ссылка на API для тех, кто разрабатывает с помощью distutils. Я просто пытаюсь запустить простую команду, например > python -m virtualenv . под Windows, и сталкиваюсь с фатальной ошибкой, которая не позволяет virtualenv делать то, что он должен делать. Мне не нужно вообще заботиться о внутренней реализации virtualenv, или о том, как работает distutils, или даже о том, какой у меня полный путь к каталогу. Пути к каталогам Windows могут содержать $ поэтому в идеале они должны поддерживаться.

Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время не было активности. Он будет закрыт, если больше не будет активности. Просто добавьте комментарий, если хотите, чтобы он оставался открытым. Спасибо за ваш вклад.

@stale закрыл это .... но пинг. Это все еще ошибка ... но я в порядке, если это не исправлено в 2.7.x ... Мне просто нужно знать

Теперь это исправлено, пока кодек файловой системы может с этим справиться, мы справимся и с этим 👍 если нет, мы выдадим соответствующее сообщение об ошибке 👍 В Windows до python3.6 это подразумевает кодек mcbs 👍 во всех последующих случаях мы говорим об УТФ-8.

@gaborbernat Спасибо ++

Привет @gaborbernat , исправлена ​​ли эта проблема в последней основной ветке?
Я использовал основную ветку и получил ошибки, похожие на проблему № 1375 .
если нет, я могу создать PR, чтобы исправить эту проблему.

Не в главной ветке, а в ветке rewrite , которая скоро заменит мастер.

Хорошо, спасибо за ответ.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги