Virtualenv: [20.0.10] поддержка магазина Windows

Созданный на 10 мар. 2020  ·  6Комментарии  ·  Источник: pypa/virtualenv

1362 утверждает, что поддерживает, однако, похоже, это не работает должным образом:

(venv) C:\Users\IEUser\astpretty>virtualenv v -vvv --with-traceback
390 setup logging to NOTSET [DEBUG report:43]
468 could not create app data folder C:\Users\IEUser\AppData\Local\pypa\virtualenv due to FileNotFoundError(2, 'The system cannot find the path specified') [INFO app_data:54]
577 created temporary app data folder C:\Users\IEUser\AppData\Local\Temp\tmpaqvhomd3 [DEBUG app_data:32]
624 find interpreter for spec PythonSpec(path=c:\users\ieuser\astpretty\venv\scripts\python.exe) [INFO builtin:44]
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\IEUser\astpretty\venv\Scripts\virtualenv.exe\__main__.py", line 9, in <module>
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\__main__.py", line 50, in run_with_catch
    run(args, options)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\__main__.py", line 20, in run
    session = cli_run(args, options)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\run\__init__.py", line 27, in cli_run
    session = session_via_cli(args, options)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\run\__init__.py", line 35, in session_via_cli
    parser = build_parser(args, options)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\run\__init__.py", line 71, in build_parser
    parser._interpreter = interpreter = discover.interpreter
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\discover.py", line 44, in interpreter
    self._interpreter = self.run()
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\builtin.py", line 33, in run
    return get_interpreter(self.python_spec, self.app_data.folder)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\builtin.py", line 46, in get_interpreter
    for interpreter, impl_must_match in propose_interpreters(spec, app_data):
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\builtin.py", line 60, in propose_interpreters
    yield PythonInfo.from_exe(spec.path, app_data), True
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\py_info.py", line 293, in from_exe
    proposed = proposed._resolve_to_system(app_data, proposed)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\py_info.py", line 328, in _resolve_to_system
    target = cls.from_exe(target.system_executable, app_data)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\py_info.py", line 290, in from_exe
    proposed = from_exe(cls, app_data, exe, raise_on_error=raise_on_error, ignore_cache=ignore_cache)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\cached_py_info.py", line 32, in from_exe
    result = _get_from_cache(cls, py_info_cache, app_data, exe, ignore_cache=ignore_cache)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\cached_py_info.py", line 56, in _get_from_cache
    py_info = _get_via_file_cache(cls, py_info_cache, app_data, exe_path, exe)
  File "c:\users\ieuser\astpretty\venv\lib\site-packages\virtualenv\discovery\cached_py_info.py", line 68, in _get_via_file_cache
    resolved_path_modified_timestamp = resolved_path.stat().st_mtime
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\lib\pathlib.py", line 1178, in stat
    return self._accessor.stat(self)
OSError: [WinError 1920] The file cannot be accessed by the system: 'C:\\Users\\IEUser\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\python.exe'

Я использую Windows store python 3.7.6 на windows 10

(venv) C:\Users\IEUser\astpretty>python --version --version
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 01:54:44) [MSC v.1916 64 bit (AMD64)]

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

@asottile, к сожалению, невозможно заполучить питон из магазина Windows в CI. Я посмотрю, сработало сразу после этого пиара. Кажется, эта решимость сломала здесь мир ...

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

также обратите внимание, я не мог запустить --help чтобы показать параметры, не нажав на ошибку: S

@asottile, к сожалению, невозможно заполучить питон из магазина Windows в CI. Я посмотрю, сработало сразу после этого пиара. Кажется, эта решимость сломала здесь мир ...

Итак, виновник здесь кажется таким:

PS C:\Users\traveler\git\virtualenv> python -c 'import sys; from pathlib import Path; import os; print(sys.executable); print(os.path.exists(sys.executable)); print(Path(sys.executable).exists())'
C:\Users\traveler\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\python.exe
False
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\lib\pathlib.py", line 1356, in exists
    self.stat()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\lib\pathlib.py", line 1178, in stat
    return self._accessor.stat(self)
OSError: [WinError 1920] The file cannot be accessed by the system: 'C:\\Users\\traveler\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\python.exe'

Итак, у нас недостаточно прав для проверки существования пути, но мы можем его запустить. pathlib вызывает исключение, os.path.exists просто возвращает тихое сообщение False .

cc @zooba Я ожидаю, что это работает так, как задумано?

Это исправлено в версии 3.8, где мы переписали stat() в Windows, чтобы обрабатывать точки повторной обработки, недоступные для чтения и недоступные для чтения (которых раньше никогда не было), а также ряд других крайних случаев.

os.lstat() на Python 3.7 работает, поэтому, если у вас есть способ использовать это вместо этого, сделайте это. В противном случае не стесняйтесь объявлять Python 3.7 из Магазина выходящим за рамки / неподдерживаемым - поэтому мы ставим на него отметку «экспериментальный».

Так что в этом случае у меня возникнет соблазн отказаться от store python 3.7. Однако другая проблема, с которой я столкнулся, заключается в том, что метод store python --symlinks создает виртуальную среду, которая не может быть выполнена; и терпит неудачу только после создания, а не во время.

Здравствуйте, исправление этой проблемы было выпущено через virtualenv 20.0.11; см. https://pypi.org/project/virtualenv/20.0.11/ (https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18). Пожалуйста, попробуйте и сообщите, если ваша проблема не была решена; если нет, прокомментируйте здесь, и мы повторно откроем заявку. Мы приносим извинения за доставленные вам неудобства и благодарим вас за терпение, пока мы устраняем неожиданные ошибки в этом новом основном выпуске.
thanks

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