Virtualenv: マむクロ゜フトストアPythonサポヌト

䜜成日 2019幎06月02日  Â·  26コメント  Â·  ゜ヌス: pypa/virtualenv

  1. MicrosoftStoreからPython3.7をむンストヌルしたす
  2. 新しいvirtualenvを䜜成しようずするず゚ラヌが発生したす
Microsoft Windows [Version 10.0.18908.1000]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\jodox>mkdir \temp\example

C:\Users\jodox>cd \temp\example

C:\temp\example>virtualenv .virtualenv
Using base prefix 'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0'
New python executable in C:\temp\example\.virtualenv\Scripts\python.exe
Command C:\temp\example\.vir...v\Scripts\python.exe -m pip config list had error code 1
Installing setuptools, pip, wheel...

  Complete output from command C:\temp\example\.vir...v\Scripts\python.exe - setuptools pip wheel:
  Traceback (most recent call last):
  File "<stdin>", line 10, in <module>
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\_internal\__init__.py", line 19, in <module>
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\_vendor\urllib3\__init__.py", line 8, in <module>
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\_vendor\urllib3\connectionpool.py", line 7, in <module>
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\Lib\socket.py", line 49, in <module>
    import _socket
ImportError: DLL load failed: Access is denied.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 13, in <module>
ImportError: cannot import name 'main' from 'pip' (C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\__init__.py)
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.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.1008.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\Scripts\virtualenv.exe\__main__.py", line 9, in <module>
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 831, in main
    symlink=options.symlink,
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 1123, in create_environment
    install_wheel(to_install, py_executable, search_dirs, download=download)
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 973, in install_wheel
    _install_wheel_with_search_dir(download, project_names, py_executable, search_dirs)
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 1060, in _install_wheel_with_search_dir
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=script)
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 924, in call_subprocess
    raise OSError("Command {} failed with error code {}".format(cmd_desc, proc.returncode))
OSError: Command C:\temp\example\.vir...v\Scripts\python.exe - setuptools pip wheel failed with error code 1

C:\temp\example>pip list
Package          Version
---------------- ----------
certifi          2019.3.9
pipenv           2018.11.26
virtualenv       16.6.0
virtualenv-clone 0.5.3

C:\temp\example>
enhancement

党おのコメント26件

@zoobaこれはWindowsストア偎の悪いパッケヌゞのように感じたす🀔

@gaborbernat venvモゞュヌルは正垞に動䜜するため、virtualenvにバグがあるず思いたす

Microsoft Windows [Version 10.0.18908.1000]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\jodox>cd \temp\example

(.venv) C:\temp\example>python3 -m venv .venv

C:\temp\example>.\.venv\Scripts\activate.bat

(.venv) C:\temp\example>python -V
Python 3.7.3

(.venv) C:\temp\example>python -c "import sys;print(sys.executable)"
C:\temp\example\.venv\Scripts\python.exe

(.venv) C:\temp\example>python -c "import socket"

(.venv) C:\temp\example>

本圓は男じゃない。 venvは、䜜成したvenvをバンドルしたものでプロビゞョニングしたす。 ここで、ネットワヌクスタックのむンポヌトは倱敗したすvirtualenvは最新のpip / setuptoolsをむンストヌルするために行いたす。 --no-downloadを枡すず、virtualenvも機胜するはずです。

@gaborbernat virtualenvは必芁ありたせんが、 pipenvはそれを䜿甚し、匕数を枡すオプションがありたせん

C:\temp\example>pipenv --help
Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:
  --where             Output project home information.
  --venv              Output virtualenv information.
  --py                Output Python interpreter information.
  --envs              Output Environment Variable options.
  --rm                Remove the virtualenv.
  --bare              Minimal output.
  --completion        Output completion (to be eval'd).
  --man               Display manpage.
  --support           Output diagnostic information for use in GitHub issues.
  --site-packages     Enable site-packages for the virtualenv.  [env var:
                      PIPENV_SITE_PACKAGES]
  --python TEXT       Specify which version of Python virtualenv should use.
  --three / --two     Use Python 3/2 when creating virtualenv.
  --clear             Clears caches (pipenv, pip, and pip-tools).  [env var:
                      PIPENV_CLEAR]
  -v, --verbose       Verbose mode.
  --pypi-mirror TEXT  Specify a PyPI mirror.
  --version           Show the version and exit.
  -h, --help          Show this message and exit.


Usage Examples:
   Create a new project using Python 3.7, specifically:
   $ pipenv --python 3.7

   Remove project virtualenv (inferred from current directory):
   $ pipenv --rm

   Install all dependencies for a project (including dev):
   $ pipenv install --dev

   Create a lockfile containing pre-releases:
   $ pipenv lock --pre

   Show a graph of your installed dependencies:
   $ pipenv graph

   Check your installed dependencies for security vulnerabilities:
   $ pipenv check

   Install a local setup.py into your virtual environment/Pipfile:
   $ pipenv install -e .

   Use a lower-level pip command:
   $ pipenv run pip freeze

Commands:
  check      Checks for security vulnerabilities and against PEP 508 markers
             provided in Pipfile.
  clean      Uninstalls all packages not specified in Pipfile.lock.
  graph      Displays currently-installed dependency graph information.
  install    Installs provided packages and adds them to Pipfile, or (if no
             packages are given), installs all packages from Pipfile.
  lock       Generates Pipfile.lock.
  open       View a given module in your editor.
  run        Spawns a command installed into the virtualenv.
  shell      Spawns a shell within the virtualenv.
  sync       Installs all packages specified in Pipfile.lock.
  uninstall  Un-installs a provided package and removes it from Pipfile.
  update     Runs lock, then sync.


C:\temp\example>pipenv install
Creating a virtualenv for this project

Pipfile: C:\temp\example\Pipfile
Using C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\python.exe (3.7.3) to create virtualenv

[==  ] Creating virtual environment...Already using interpreter C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\python.exe
Using base prefix 'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0'
New python executable in C:\Users\jodox\.virtualenvs\example-Q6QloNNM\Scripts\python.exe
Command C:\Users\jodox\.virt...M\Scripts\python.exe -m pip config list had error code 1
Installing setuptools, pip, wheel...

  Complete output from command C:\Users\jodox\.virt...M\Scripts\python.exe - setuptools pip wheel:
  Traceback (most recent call last):
  File "<stdin>", line 10, in <module>
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\_internal\__init__.py", line 19, in <module>
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\_vendor\urllib3\__init__.py", line 8, in <module>
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\_vendor\urllib3\connectionpool.py", line 7, in <module>
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\Lib\socket.py", line 49, in <module>
    import _socket
ImportError: DLL load failed: Access is denied.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 13, in <module>
ImportError: cannot import name 'main' from 'pip' (C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\__init__.py)
----------------------------------------
...Installing setuptools, pip, wheel...done.

Failed creating virtual environment
[pipenv.exceptions.VirtualenvCreationException]:   File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pipenv\cli\command.py", line 254, in install
[pipenv.exceptions.VirtualenvCreationException]:       editable_packages=state.installstate.editables,
[pipenv.exceptions.VirtualenvCreationException]:   File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pipenv\core.py", line 1741, in do_install
[pipenv.exceptions.VirtualenvCreationException]:       pypi_mirror=pypi_mirror,
[pipenv.exceptions.VirtualenvCreationException]:   File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pipenv\core.py", line 574, in ensure_project
[pipenv.exceptions.VirtualenvCreationException]:       pypi_mirror=pypi_mirror,
[pipenv.exceptions.VirtualenvCreationException]:   File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pipenv\core.py", line 506, in ensure_virtualenv
[pipenv.exceptions.VirtualenvCreationException]:       python=python, site_packages=site_packages, pypi_mirror=pypi_mirror
[pipenv.exceptions.VirtualenvCreationException]:   File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pipenv\core.py", line 935, in do_create_virtualenv
[pipenv.exceptions.VirtualenvCreationException]:       extra=[crayons.blue("{0}".format(c.err)),]
[pipenv.exceptions.VirtualenvCreationException]: Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.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.1008.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 2580, in <module>
    main()
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 831, in main
    symlink=options.symlink,
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 1123, in create_environment
    install_wheel(to_install, py_executable, search_dirs, download=download)
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 973, in install_wheel
    _install_wheel_with_search_dir(download, project_names, py_executable, search_dirs)
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 1060, in _install_wheel_with_search_dir
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=script)
  File "C:\Users\jodox\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv.py", line 924, in call_subprocess
    raise OSError("Command {} failed with error code {}".format(cmd_desc, proc.returncode))
OSError: Command C:\Users\jodox\.virt...M\Scripts\python.exe - setuptools pip wheel failed with error code 1

Failed to create virtual environment.

C:\temp\example>

_socketはむンポヌトできないため、コアのパッケヌゞ化の問題に芁玄されたす🀔ただし、これを怜蚌する必芁がありたす。

@pfmooreこれはpipに関連しおいるようです🀔ですが、仮想環境からPythonパスにホむヌルを眮くこずで呌び出されるず、奇劙に珟れたす👍

Command C:\Users\traveler\gi...v\Scripts\python.exe -m pip config list had error code 1
Installing setuptools, pip, wheel...

  Complete output from command C:\Users\traveler\gi...v\Scripts\python.exe - setuptools pip wheel:
  Traceback (most recent call last):
  File "<stdin>", line 10, in <module>
  File "C:\Users\traveler\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\_internal\__init__.py", line 19, in <module>
  File "C:\Users\traveler\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\_vendor\urllib3\__init__.py", line 8, in <module>
  File "C:\Users\traveler\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\virtualenv_support\pip-19.1.1-py2.py3-none-any.whl\pip\_vendor\urllib3\connectionpool.py", line 7, in <module>
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\Lib\socket.py", line 49, in <module>
    import _socket
ImportError: DLL load failed: Access is denied.

線集NM、私たちの新しいvirtualenvは_socketにアクセスできないようです、私の悪い🀊‍♂

したがっお、新しく䜜成されたvirtualenvに_socketをむンポヌトしようずするず、次のように倱敗したす。

# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\Lib\_socket.cp37-win_amd64.pyd
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\Lib\_socket.pyd
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\Lib\_socket.py
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\Lib\_socket.pyw
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\Lib\_socket.pyc
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\DLLs\_socket.cp37-win_amd64.pyd
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\DLLs\_socket.pyd
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 670, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 583, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1043, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: DLL load failed: Access is denied.

むンストヌルされたPythonから同じこずをしながら

PythonのStoreディストリビュヌションを䜿甚したこずはありたせん。 @zoobaはその配垃の専門家なので、ここで助けを求めるこずをお勧めしたす。

@JoDoX簡単なテストをしおもらえたすか Pythonを起動し、実行したす

import _socket
import socket

これぱラヌなしで機胜するはずです。 ゚ラヌが発生した堎合、問題はvirtualenvたたはpipではなく、Pythonの䜕かにありたす。

@pfmoore䞊蚘の私の投皿を参照しおください。 これらのコマンドは、むンストヌルされおいるPythonから起動した堎合に機胜したす。 ただし、仮想環境python内からは倱敗したす。 むンストヌルされたPythonから実行された堎合にのみDLLにアクセスできるずいう事実ず䜕らかの関係があるようです。 実行可胜ファむルをコピヌするず、アップストリヌムDLLにアクセスできなくなるようです。 これを考えるず、問題がvirtualenvたたはWindowsストアのパッケヌゞに関連しおいるのかどうかはわかりたせん。

線集

venvを䜜成しお起動ログを芋るず、venvが実際に元の堎所からpydをロヌドしようずしおいるこずがわかりたす。 実際には、元の堎所からすべおをロヌドしたす。 IncludeずLibの䞡方が空です。 virtualenvでは、今のずころこれらをコピヌしたす。...おそらく、珟圚持っおいるものよりもvenvを䜜成するためのより良い方法がありたす🀔調査する必芁がありたす。

# C:\Users\traveler\git\venv\lib\encodings\__pycache__\__init__.cpython-37.pyc matches C:\Users\traveler\git\venv\lib\encodings\__init__.py
# code object from 'C:\\Users\\traveler\\git\\venv\\lib\\encodings\\__pycache__\\__init__.cpython-37.pyc'
# trying C:\Users\traveler\git\venv\lib\codecs.cp37-win_amd64.pyd
# trying C:\Users\traveler\git\venv\lib\codecs.pyd
# trying C:\Users\traveler\git\venv\lib\codecs.py
# C:\Users\traveler\git\venv\lib\__pycache__\codecs.cpython-37.pyc matches C:\Users\traveler\git\venv\lib\codecs.py
# code object from 'C:\\Users\\traveler\\git\\venv\\lib\\__pycache__\\codecs.cpython-37.pyc'

vs

# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\DLLs\encodings.cp37-win_amd64.pyd
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\DLLs\encodings.pyd
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\DLLs\encodings.py
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\DLLs\encodings.pyw
# trying C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\DLLs\encodings.pyc
# C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1008.0_x64__qbz5n2kfra8p0\lib\encodings\__pycache__\__init__.

@gaborbernatああ、ごめんなさい-私はあなたの投皿をざっず読み、あなたが蚀っおいるこずを誀解したした。 私の悪い。

Python実行可胜ファむルをコピヌするず問題が発生する可胜性があるこずを私は確かに陀倖したせん。 ストアビルドがどのように機胜するかに぀いおの開発者レベルのドキュメントを知らないので、ここで@zoobaが本圓に必芁です。たた、コヌドに飛び蟌むのに十分な知識がありたせん。

ええ、実行可胜ファむルをコピヌするこずはできたせん。 アプリパッケヌゞの倖に出るず、オペレヌティングシステムによっおコンテキストが適切にアクティブ化されなくなりたす。

シンボリックリンクするか、$$ venv/scripts/nt $$にあるpython.exeをコピヌするこずができたす。 これはpy.exeランチャヌの特別なコピヌであり、実際に起動するものを芋぀けるためにpyvenv.cfgを探したす。 たたは、そのファむルを䜿甚したくない堎合は、奜みの構成蚭定を探す別のバヌゞョンのファむルを䜜成できたす。

アプリパッケヌゞの倖に出るず、オペレヌティングシステムによっおコンテキストが適切にアクティブ化されなくなりたす。

ややオフトピックですが、これを実珟するコヌドおよび/たたはこれに関連するMSドキュメントを教えおいただけたすか 私は珟圚よりもストアアプリをよく理解したいので基本的には珟時点ではMS Storeアプリに぀いお䜕も理解しおいたせん、このこずに぀いおあなたにpingを続ける必芁はありたせん;-)

この郚分が文曞化されおいるかどうかはわかりたせん。文曞化されおいる堎合は、MSIXドキュメントの奥深くにあるか、それが芋぀かった堎合はAppV仕様の䞀郚に含たれおいる可胜性がありたす䜿甚されおいる分離テクノロゞの叀いバヌゞョンです。 。

パッケヌゞは、䞻にアプリずしお䜿甚するこずを目的ずしおいたす。぀たり、単䞀の゚ントリポむントを意味したす他のアプリがDLLを䜿甚できないようにしたす。 したがっお、パッケヌゞに属しおいるこずを確認するたで、パッケヌゞ内のLoadLibraryファむルを取埗するこずはできたせん。通垞、そのための唯䞀の方法は、元のpython.exeを起動するこずです。

ああ、そしお明確にするために、これらはすべお意図的な、蚭蚈によるOSの制限です。 Pythonはこれを実珟するこずを遞択しなかったため、CPythonにはそのためのコヌドはありたせん。 VENV_REDIRECT定矩の背埌に隠されたlauncher.cの郚分は興味深いかもしれたせんがそしおサポヌトされおいない、内郚の詳现...

ありがずう。 簡単な調査を行いたしたが、 https//docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-behind-the-scenesは関連性があるように芋えたすただし、関連性はありたせん。ただ読んでいたすが、私は䞻にこれを投皿しおいるので、埌でリンクをもう䞀床芋぀けるこずができたす;-)

@gaborbernat @zoobaが提案したように、virtualenvがストアPythonをサポヌトするための「正しい」方法は、リダむレクタをvenv/scripts/ntからコピヌするこずだず思いたす。 しかし、これは、venvを䜿甚しお環境を䜜成するずいう考えに非垞に近いものであり、しばらく前に提案したした。互換性の圱響があるため、熱心ではありたせんでした。 Storeアプリケヌションで実行した堎合はさらに悪化するのではないかず思いたすが、同じバヌゞョンの「暙準」Pythonではそうではありたせん。 さらに、リダむレクタをvirtualenvのカスタムsite.pyのようなものず混合するこずさえうたくいくかどうかはわかりたせん。

コヌディングのお手䌝いをさせおいただきたすが、あなたが採甚したいアプロヌチに぀いおのガむダンスが必芁になりたす。

ああ、 @ zooba 、私はあなたの泚意を払っおいたすが、ストアPythonは「通垞の」Pythonむンストヌルずどの皋床共存しおいたすかこのようなものをテストしたい堎合は、干枉を避けるためにクリヌンなVMを䜿甚する方が良いでしょうかメむンのPythonむンストヌルでたたは副䜜甚なしでストアPythonをむンストヌルおよびアンむンストヌルできたすか

だから私はこれをよく考えたした。 結局、コアロゞックを次のように切り替えるのは理にかなっおいるず思いたす。

  • 可胜であれば、stdlibが提䟛するvenvを䜿甚しおvenvを䜜成し、stdlibが䜜成したvenvにパッチを適甚しお、同じ保蚌を提䟛したす。
  • それ以倖の堎合は、独自のロゞックを䜿甚しおください。

stdlibが提䟛するvenvが存圚しない可胜性があるいく぀かの堎所

  • Python 2、
  • venvが個別にパッケヌゞ化されおおり、珟時点ではむンストヌルされおいないディストリビュヌションubuntu python3.7-venvなど。 @pfmooreは教えたしたか これを実装するために、珟時点で提䟛しおいる保蚌のリストを䜜成する必芁がありたす。

私はこれで匷い+1になるでしょう。 Python 2がたもなくEOLに到達するず、基本的にサポヌトされおいるすべおのバヌゞョンのPythonにvenvが含たれる状況になりたすサポヌトされおいないバヌゞョンには、ただメカニズムがありたす- pyvenv.cfg 。 したがっお、珟圚䜿甚しおいるハックを可胜な限り回避できれば、それは倧きなメリットになりたすたた、virtualenvずvenvの互換性も問題になりたせん:-)

難しいのは、私たちが提䟛する保蚌のリストを構成するものを決定するこずです。 実際にたくさんあるかどうかはわかりたせんが、難しいのはsys.real_prefixずsys.base_prefixの問題だけです。正盎なずころ、これに぀いおはstdlibに埓う必芁があるず思いたす適切な移行期間。

これに぀いおは@pfmooreに同意したす。

明確にするために、Python2のサポヌトは少なくずも今埌3幎間は廃止される予定はありたせん。 新しい゜リュヌションでは、可胜な堎合はstdlib venvを䜿甚し、それ以倖の堎合は組み蟌みロゞックにフォヌルバックしたす。

了解した。 Python 2がサポヌトされるように、既存のプロセスを維持する必芁がありたすが、コアvenvが利甚可胜な堎所でそれを回避できれば、それは玠晎らしいこずです。

https://github.com/pypa/virtualenv/issues/1366で別のディスカッションを開始したした👍

ああ、 @ zooba 、私はあなたの泚意を払っおいたすが、ストアPythonは「通垞の」Pythonむンストヌルずどの皋床共存しおいたすかこのようなものをテストしたい堎合は、干枉を避けるためにクリヌンなVMを䜿甚する方が良いでしょうかメむンのPythonむンストヌルでたたは副䜜甚なしでストアPythonをむンストヌルおよびアンむンストヌルできたすか

申し蚳ありたせんが、 @ pfmoore 、これを芋逃したしたGithub通知が垞に私の泚意を匕くずは限りたせん...。

ストアPythonは、副䜜甚なしにむンストヌル/アンむンストヌルできたす。これは、実際には最倧の機胜の1぀です。 これの欠点は、実際のナヌザヌレゞストリを曎新できないこずです。したがっお、倀を䞊曞きするずクリヌンむンストヌル/アンむンストヌルサむクルが䞭断されるため、PEP 514では十分ではありたせん。

Twitterで話し合ったのは、pep 514ごずにPythonCoreの代わりに別の䌚瀟Microsoft Storeなどを䜿甚した堎合、䞊曞きの問題にはならないずいうこずです。 そしお、それを受け入れるためにpy.exeを曎新する必芁がありたす。

virtualenvの代わりにvenvを䜿甚するず、問題が解決したす

叀いvirtualenvはこれをサポヌトできず、サポヌトしたせん。 virtualenv 20、リラむトする必芁がありたす。 怜蚌する必芁がありたすが、残念ながら、ストアpythonをAzureCIに远加するこずはできたせん。 @zoobaこれがただ圓おはたり、今埌も続くこずを確認できたすか

最初の反埩では、組み蟌み/自己実行メ゜ッドがストアをサポヌトしおいないこずをマヌクできたす。 Pythonがストアpyhton @zoobaであるかどうかを確認するには、次のこずをお勧めしたす。

それがあなたの最倧の問題だず思うので、おそらくsys.executableを開いお読んでみたくなるでしょう倱敗したす
たたは、pythonXY.dllがsys.executableず同じディレクトリにないかどうかを確認できたす。これは、修正する必芁があるもう1぀の前提条件だず思いたす。
これはいく぀かの異なる方法埋め蟌み、フリヌズ、静的ビルドで発生する可胜性があり、virtualenvは珟圚それらのいずれでも機胜しないず思われたす
叀い3.5より前のむンストヌラヌはそれをシステムフォルダヌに入れるこずができたしたが、それでも機胜するので、完璧なテストではありたせん。

これは珟圚、1502の䞀郚ずしお達成されおいたす。 Virtualenvは、ストアpythonを組み蟌みの戊略ず互換性がないものずしお正しくマヌクし、フォヌルバックしおタスクをストアpythonのvenvモゞュヌルに委任したす。 プロゞェクトのテストスむヌトは合栌です。 さらに、Windows OSがサポヌトしおいる堎合は、copyメ゜ッドの代わりにシンボリックリンクを䜿甚したす䞀時フォルダヌ内にシンボリックリンクを䜜成しおテストしたす。

virtualenv内のMicrosoftStoreの組み蟌みサポヌトは、おそらくこれに必芁な新しい手法を䜿甚するようにcpython3windowsクラスを改善するこずにより、将来のチケットで実行される可胜性がありたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡