Virtualenv: [20.0.10] Windows Store-Unterstützung

Erstellt am 10. März 2020  ·  6Kommentare  ·  Quelle: pypa/virtualenv

1362 beansprucht Support, aber es scheint nicht wie gewünscht zu funktionieren:

(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'

Ich verwende den Windows Store Python 3.7.6 unter 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)]
bug

Hilfreichster Kommentar

@asottile Leider ist es nicht möglich, Windows Store Python in CI zu erhalten. Ich schau mal, es hat gleich nach der PR geklappt. Scheint, dass die Entschlossenheit hier die Welt zerbrach...

Alle 6 Kommentare

Beachten Sie auch, dass ich --help nicht ausführen konnte, um die Optionen anzuzeigen, ohne den Fehler zu treffen: S

@asottile Leider ist es nicht möglich, Windows Store Python in CI zu erhalten. Ich schau mal, es hat gleich nach der PR geklappt. Scheint, dass die Entschlossenheit hier die Welt zerbrach...

Der Übeltäter hier sieht also so aus:

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'

Wir haben also nicht genügend Rechte, um die Existenz des Pfads zu überprüfen, aber wir können ihn ausführen. pathlib löst eine Ausnahme aus, os.path.exists nur ein stilles False .

cc @zooba Ich

Es wurde in 3.8 behoben, wo wir stat() unter Windows umgeschrieben haben, um nicht folgbare und nicht lesbare Analysepunkte zu behandeln (die vorher nie wirklich existiert hatten), sowie eine Reihe anderer Randfälle.

os.lstat() auf Python 3.7 funktioniert, wenn Sie also stattdessen eine Möglichkeit haben, dies zu verwenden, probieren Sie es aus. Andernfalls können Sie Python 3.7 aus dem Store gerne als außerhalb des Geltungsbereichs/nicht unterstützt deklarieren - deshalb haben wir die Markierung "experimentell" darauf gesetzt.

Daher bin ich versucht, in diesem Fall Store Python 3.7 fallen zu lassen. Ein anderes Problem, auf das ich gestoßen bin, ist jedoch, dass die Methode Store Python --symlinks eine virtuelle Umgebung erstellt, die nicht ausgeführt werden kann. und scheitert nur nach der Erstellung, nicht während.

Hallo, ein Fix für dieses Problem wurde über virtualenv 20.0.11 veröffentlicht; siehe https://pypi.org/project/virtualenv/20.0.11/ (https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18). Bitte versuchen Sie es und melden Sie sich, wenn Ihr Problem nicht behoben wurde. falls nicht, bitte hier kommentieren und wir öffnen das Ticket wieder. Wir möchten uns für die Unannehmlichkeiten entschuldigen, die Ihnen dadurch entstanden sind, und bedanken uns für Ihre Geduld, während wir die unerwarteten Fehler mit dieser neuen Hauptversion beheben.
thanks

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen