ç°å¢
説æ
pip19.0ã§pipinstall pyinstaller == 3.4ãå®è¡ãããšãã€ã³ã¹ããŒã«ãšã©ãŒãçºçããŸãã ModuleNotFoundErrorïŒãPyInstallerããšããååã®ã¢ãžã¥ãŒã«ããããŸãã
äºæ³ãããè¡å
pip 18.1ã®å Žåãšåæ§ã«ãpyinstallãã€ã³ã¹ããŒã«ãããããšãæåŸ
ããŸãã
åçŸããæ¹æ³
python3ã®äœ¿çšïŒ
pip install pyinstaller = 3.4
åºå
pip install pyinstaller==3.4
Collecting pip
Using cached https://files.pythonhosted.org/packages/60/64/73b729587b6b0d13e690a7c3acd2231ee561e8dd28a58ae1b0409a5a2b20/pip-19.0-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 9.0.3
Uninstalling pip-9.0.3:
Successfully uninstalled pip-9.0.3
Successfully installed pip-19.0
(BuildVEnv) jlaroche-mbp:TrackSense$ pip install pyinstaller
Collecting pyinstaller
Using cached https://files.pythonhosted.org/packages/03/32/0e0de593f129bf1d1e77eed562496d154ef4460fd5cecfd78612ef39a0cc/PyInstaller-3.4.tar.gz
Installing build dependencies ... done
Getting requirements to build wheel ... error
Complete output from command /Users/jlaroche/Dev/uapkg/packages/system/algo/BuildVEnv/bin/python3 /Users/jlaroche/Dev/uapkg/packages/system/algo/BuildVEnv/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /var/folders/j6/7t8sg1vj4q97zhh9z5cdmxbm4rz935/T/tmps3z6flnv:
Traceback (most recent call last):
File "/Users/jlaroche/Dev/uapkg/packages/system/algo/BuildVEnv/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py", line 207, in <module>
main()
File "/Users/jlaroche/Dev/uapkg/packages/system/algo/BuildVEnv/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py", line 197, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/Users/jlaroche/Dev/uapkg/packages/system/algo/BuildVEnv/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py", line 54, in get_requires_for_build_wheel
return hook(config_settings)
File "/private/var/folders/j6/7t8sg1vj4q97zhh9z5cdmxbm4rz935/T/pip-build-env-lo_ir5_f/overlay/lib/python3.6/site-packages/setuptools/build_meta.py", line 115, in get_requires_for_build_wheel
return _get_build_requires(config_settings, requirements=['wheel'])
File "/private/var/folders/j6/7t8sg1vj4q97zhh9z5cdmxbm4rz935/T/pip-build-env-lo_ir5_f/overlay/lib/python3.6/site-packages/setuptools/build_meta.py", line 101, in _get_build_requires
_run_setup()
File "/private/var/folders/j6/7t8sg1vj4q97zhh9z5cdmxbm4rz935/T/pip-build-env-lo_ir5_f/overlay/lib/python3.6/site-packages/setuptools/build_meta.py", line 85, in _run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 20, in <module>
from PyInstaller import __version__ as version, HOMEPATH, PLATFORM
ModuleNotFoundError: No module named 'PyInstaller'
ã¿ã€ã ã©ã€ã³ã®ã¡ã³ããããŒãïŒ httpsïŒ //github.com/pypa/pip/issues/6163#issuecomment-460563963ãåç §ããŠ
ããã¯ãpyinstallerãã€ã³ã¹ããŒã«ã®ããã«èªåèªèº«ãã€ã³ããŒãããæ¹æ³ã®ããããã«åé¡ãããããã§ãã
PyInstallerã®äººã ã«åé¡ãæåºããã®ã¯è¯ãèããããããŸããã
çŸåš18.1ã䜿çšããŠããŸããã19.0ã«ã¢ããã°ã¬ãŒããããšããã®åé¡ãçºçããŸãã PyInstallerãªããžããªã«é¢é£ããåé¡ããããŸããããã¯ãpip ''ãsys.pathã«ãªãããã§ãã
ããã¯ããªãäžè¬çãªã¯ãŒã¯ãããŒã ãšæããŸãã __version__ = "1.2.3"
ãfoo/__init__.py
ããã import foo
ãsetup.py
å
¥ããã®ã§ã2ãæã§ããŒãžã§ã³ãæå®ããå¿
èŠã¯ãããŸããã ãŸããã©ã€ãã©ãªã®ãã¹ãŠã®ãŠãŒã¶ãŒã¯ã PEP396ã«åŸã£ãŠããŒãžã§ã³ãæ€æ»ã§ããŸãã
# foo/__init__.py
__version__ = "1.2.3"
# setup.py
from setuptools import setup
import foo
setup(..., version=foo.__version__)
ãŸããããã¯pyproject.toml
ãã¡ã€ã«ïŒããã³setup.py
ïŒãããå Žåã«ã®ã¿çºçããŸãã ãããåé€ãããšãã€ã³ã¹ããŒã«ã¯æ£åžžã«æ©èœããŸãã ãã®ãããããã§ã®åäœã«ã¯ããã€ãã®éããããããã§ãã ãã¶ããäŒçµ±çãªæ¹æ³ã¯sys.path
/ PYTHONPATH
ãŸããïŒ
ãããç§ã¯äœãèµ·ãã£ãŠããã®ãç解ã§ãããšæããŸãã pyproject.toml
ãã¡ã€ã«ã䜿çšããããšã§ãåºæ¬çã«PIPã«PEP517 / 518ã䜿çšããããã«æ瀺ããŠããããšã«ãªããŸãã
# pyproject.toml
[build-system]
requires = ["setuptools", "wheel"]
äžèšã¯ãPyInstallerããã«ãããããã«setuptools
ãšwheel
ãå¿
èŠã§ããããšãpipã«äŒããŠããŸãã ããããPyInstallerã®å Žåã setup.py
ããããå«ãŸããŠããŸãã
# setup.py
from PyInstaller import __version__
PEP 517ã®èŠ³ç¹ããã¯ã setuptools
ãšwheel
é€ããŠãããèªäœãæ§ç¯ããå¿
èŠãããããšãæå³ããŸãã ãã¡ãããããã¯å°ãå¥åŠã§ãã
# pyproject.toml
[build-system]
requires = ["setuptools", "wheel", "PyInstaller"]
@cjerdonekãhttps://github.com/pypa/pip/issues/6175#issuecomment-456769285ã§èšåããŠããããã«ã誰ãã--no-use-pep517
ãããä¿®æ£ããããã©ããã確èªã§ããŸããïŒ
ãã®åé¡ã®åå ã¯ããã«ãã®åé¢ãŸãã¯PEP 517ã³ãŒããããã±ãŒãžãã£ã¬ã¯ããªã®ã«ãŒããsys.pathã«ããããšã確èªããŠããªãããšã ãšæããŸããããã¯ãpandasã®setup.pyã®æšªã«versioneer.pyãããããã§ãã ããæç¹ã§ãããèµ·ãã£ãããšãèŠããŠããŸããããã®è°è«ãäœã§ãã£ãããé ã®äžã§èŠããŠããŸããã ããã¯ãpipã§ã¯ãªãsetuptoolsãã«ãããã¯ãšã³ãã®åé¡ãšèŠãªãããããpipã®åé¢ã¡ã«ããºã ã®é害ã§ããå¯èœæ§ããããŸãã
[...]誰ãã--no-use-pep517ããããä¿®æ£ãããã©ããã確èªã§ããŸããïŒ
PyInstallerã¯--no-use-pep517
æ£åžžã«ã€ã³ã¹ããŒã«ãããŸãã
ããŠãããã¯ç¢ºãã«æ°ããPEP 517ã³ãŒãã®åé¡ã§ãããåââé¡ã¯ãããžã§ã¯ãã«ãŒããå«ããã£ã¬ã¯ããªãsys.path
è¿œå ãããŠããªãããšã ãã ãšç¢ºä¿¡ããŠããŸãã ãã¶ãã @ pfmooreã¯ããããpipã®è²¬ä»»ãªã®ãsetuptoolsãªã®ãããããã
ããã®å¥ã®äŸã«åœ¹ç«ã€å ŽåïŒ apache-airflow
çµç±ã¯pip install pendulum==1.4.4
倱æããŸããã pip install --no-use-pep517 pendulum==1.4.4
æ©èœããŸãã
ååŸããã¹ã¿ãã¯ãã¬ãŒã¹ã¯äŒŒãŠããŸãã
Collecting pendulum==1.4.4
Using cached https://files.pythonhosted.org/packages/85/a5/9fc15751f9725923b170ad37d6c61031fc9e941bafd5288ca6ee51233284/pendulum-1.4.4.tar.gz
Installing build dependencies ... done
Getting requirements to build wheel ... error
Complete output from command /Users/ash/.virtualenvs/clean-airflow/bin/python3.7 /Users/ash/.virtualenvs/clean-airflow/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /var/folders/lr/9jc9vkgn025fn6jmwm4mv4_w0000gn/T/tmprosed3kj:
Traceback (most recent call last):
File "/Users/ash/.virtualenvs/clean-airflow/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 207, in <module>
main()
File "/Users/ash/.virtualenvs/clean-airflow/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 197, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/Users/ash/.virtualenvs/clean-airflow/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 54, in get_requires_for_build_wheel
return hook(config_settings)
File "/private/var/folders/lr/9jc9vkgn025fn6jmwm4mv4_w0000gn/T/pip-build-env-g__m0jh6/overlay/lib/python3.7/site-packages/setuptools/build_meta.py", line 115, in get_requires_for_build_wheel
return _get_build_requires(config_settings, requirements=['wheel'])
File "/private/var/folders/lr/9jc9vkgn025fn6jmwm4mv4_w0000gn/T/pip-build-env-g__m0jh6/overlay/lib/python3.7/site-packages/setuptools/build_meta.py", line 101, in _get_build_requires
_run_setup()
File "/private/var/folders/lr/9jc9vkgn025fn6jmwm4mv4_w0000gn/T/pip-build-env-g__m0jh6/overlay/lib/python3.7/site-packages/setuptools/build_meta.py", line 85, in _run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 47, in <module>
from build import *
File "/Users/ash/.virtualenvs/clean-airflow/lib/python3.7/site-packages/pip/_vendor/pep517/build.py", line 7, in <module>
from pip._vendor import pytoml
ModuleNotFoundError: No module named 'pip'
ãŸãã以äžã®ã€ã³ã¹ããŒã«ãpip v 19.0ã§ã¯æ©èœããŸãããã-no-use-pep5517ã䜿çšãããšæ©èœããŸãã
pendulum == 1.5.0ïŒAttributeErrorïŒã¢ãžã¥ãŒã« 'enum'ã«ã¯å±æ§ 'IntFlag'ããããŸããïŒ
pendulum == 1.5.1ïŒAttributeErrorïŒã¢ãžã¥ãŒã« 'enum'ã«ã¯å±æ§ 'IntFlag'ããããŸããïŒ
pendulum == 2.0.0ïŒAttributeErrorïŒã¢ãžã¥ãŒã« 'enum'ã«ã¯å±æ§ 'IntFlag'ããããŸããïŒ
pendulum == 2.0.1ïŒAttributeErrorïŒã¢ãžã¥ãŒã« 'enum'ã«ã¯å±æ§ 'IntFlag'ããããŸããïŒ
pendulum == 2.0.2ïŒAttributeErrorïŒã¢ãžã¥ãŒã« 'enum'ã«ã¯å±æ§ 'IntFlag'ããããŸããïŒ
äžæ¹ã2.0.3ãš2.0.4ã¯æ£åžžã«ã€ã³ã¹ããŒã«ãããŸãã
cartopyïŒå°ãªããšãææ°ãªãªãŒã¹ïŒã19.0以éã®ã€ã³ã¹ããŒã«ã«å€±æããsetup.pyã®é£ã«ããversioneer.pyã®ã€ã³ããŒãã«å€±æããŸãã
ããã¯ãç§ãæ±ã£ãŠããããã€ãã®ãããžã§ã¯ãã®åé¡ã§ããããŸãã pyproject.tomlã䜿çšããŠPythonã®é»ã®ãã©ã¡ãŒã¿ãŒãå®çŸ©ããsetup.pyã§åæ§ã®from project.version import __version__
ããŸãã
å°ãªããšããpyproject.tomlã§ãããžã§ã¯ãã®åé¢ãå®çŸ©ã§ããªããŠãååã ãšæããŸãã ãããžã§ã¯ããã€ã³ã¹ããŒã«ããã人ã«--no-buid-isolation
ãŸãã¯--no-use-pep517
ã䜿çšãããã®ã¯ç§ã«ã¯äžåçã«æããŸã
倱æã¯get_requires_for_build_wheel
ã«ããããã§ãsetuptoolsããã¯ãšã³ãã¯setup.py
ãå®è¡ããŠããã«ãèŠä»¶ã決å®ããããã«äœããã®ã€ã³ããã¹ãã¯ã·ã§ã³ãå®è¡ããŸãïŒç¹å®ã®ã³ãŒãã¯ããã«ãã
PEP 517ã¯ããã«ããã£ã¬ã¯ããªãsys.path
ã«è¿œå ããç°å¢ã§ããã³ããšã³ããããã¯ãå®è¡ããå¿
èŠããããšã¯è¿°ã¹ãŠããŸããããããè¡ããšãåé¢ãç Žãããå¯èœæ§ããããšããæœåšçãªæžå¿µããããŸãïŒãã«ããã£ã¬ã¯ããªã«ããšãã°ãå¿
é ã§ãããæå®ãããŠããªãããã±ãŒãžããããŸãïŒã ãããã£ãŠãç§ã®å¥œã¿ã¯ããã«ããã£ã¬ã¯ããªãsys.path
è¿œå ããªãããšã§ãã ãã ãããã®ãªã°ã¬ãã·ã§ã³ããã°ããä¿®æ£ã§ããå Žåã¯ãããããã®ã䟿å©ãªå ŽåããããŸãã ãããããããžã§ã¯ãã¯ããã«äŸåãã¹ãã§ã¯ãªããšæããŸãã
æŠèŠïŒ
sys.path
è¿œå ããã ãã§ãïŒãsys.path
ã«è¿œå ã§ããŸãããPEP517ããããããã³ããšã³ãã®è²¬ä»»ãšèŠãªããŠãããšã¯æããŸãããsys.path
å°ãªããšãPEPã®æ確åãå¿
èŠãšãªããŸããPEP 517ãéçºãããŠãããšãããã®ã·ããªãªã¯èæ ®ãããŠããªãã£ããšæããŸãã ããããããã¯setuptoolsåºæïŒãšããããããã«ãã®äžéšãšããŠä»»æã®Pythonã³ãŒããå®è¡ããããã¯ãšã³ãã«åºæïŒã ããã§ãã
çŸåšã®ãã£ã¬ã¯ããªããsetup.py
ã«äœããã€ã³ããŒãããããšã¯ããªãäžè¬çã ãšæããŸããäžè¬çã«ã¯ã setup.py
ã$PWD
ãã®ããã«æ±ããŸãã
ãã®è²¬ä»»ãsetuptools
ã«æŒãä»ããã®ã¯åççã ãšæããŸããããããããããæ¬åœã«å¿
èŠãªå¯äžã®ãããžã§ã¯ãã ããã§ãã
ãããããã«ã€ããŠããå°ãèããŠã¿ããšãããã¯setuptoolsã®ããã¯ãšã³ãã®è²¬ä»»ã ãšç¢ºä¿¡ããŠããŸãã PEP 517ããåã§ã¯ãpipã¯ã¹ã¯ãªãããšããŠsetup.py
ãããããæšæºã®Pythonã«ãŒã«ã¯ã¹ã¯ãªãããã£ã¬ã¯ããªãsys.path
ãŸãã PEP 517ã§ã¯ã setup.py
åŒã³åºãã¯ããã¯ãšã³ãããã¯ãžã®åŒã³åºãã«çœ®ãæããããããããããã®ããã¯ã¯ã»ãã³ãã£ã¯ã¹ãä¿æããå¿
èŠããããŸãã setuptoolsã¯ããã¯ããsetup.py
ãã€ã³ããã»ã¹ã§å®è¡ããããã sys.path
èªäœã管çããå¿
èŠããããŸãã ããŸãããã°ãããã¯åœŒãã«ãšã£ãŠå€§ããªä¿®æ£ã§ã¯ãããŸããã @jeanlaroche ïŒãŸãã¯ãã®åé¡ã«ã¶ã€ãã£ãŠããä»ã®èª°ãïŒã¯ããã®ã¹ã¬ãããåç
§ããŠãsetuptoolsãã©ãã«ãŒã§åé¡ãæèµ·ã§ããŸããïŒ
[...]誰ãã--no-use-pep517ããããä¿®æ£ãããã©ããã確èªã§ããŸããïŒ
--no-use-pep517ã§pip install pandas
ãæåããããšã確èªã§ããŸãã
--no-use-pep517
ã䜿çšãããšãå£ãããã¹ãŠã®ããã±ãŒãžã§æ©èœããããšã確èªã§ããŸã
ç§ã«ãšã£ãŠãæå
pip install pyinstaller --no-use-pep517
Collecting pyinstaller
Using cached https://files.pythonhosted.org/packages/03/32/0e0de593f129bf1d1e77eed562496d154ef4460fd5cecfd78612ef39a0cc/PyInstaller-3.4.tar.gz
Requirement already satisfied: setuptools in c:\python37\lib\site-packages (from pyinstaller) (39.0.1)
Collecting pefile>=2017.8.1 (from pyinstaller)
Downloading https://files.pythonhosted.org/packages/ed/cc/157f20038a80b6a9988abc06c11a4959be8305a0d33b6d21a134127092d4/pefile-2018.8.8.tar.gz (62kB)
100% |ââââââââââââââââââââââââââââââââ| 71kB 1.0MB/s
Collecting macholib>=1.8 (from pyinstaller)
Downloading https://files.pythonhosted.org/packages/41/f1/6d23e1c79d68e41eb592338d90a33af813f98f2b04458aaf0b86908da2d8/macholib-1.11-py2.py3-none-any.whl
Collecting altgraph (from pyinstaller)
Downloading https://files.pythonhosted.org/packages/0a/cc/646187eac4b797069e2e6b736f14cdef85dbe405c9bfc7803ef36e4f62ef/altgraph-0.16.1-py2.py3-none-any.whl
Collecting pywin32-ctypes (from pyinstaller)
Using cached https://files.pythonhosted.org/packages/9e/4b/3ab2720f1fa4b4bc924ef1932b842edf10007e4547ea8157b0b9fc78599a/pywin32_ctypes-0.2.0-py2.py3-none-any.whl
Collecting future (from pefile>=2017.8.1->pyinstaller)
Downloading https://files.pythonhosted.org/packages/90/52/e20466b85000a181e1e144fd8305caf2cf475e2f9674e797b222f8105f5f/future-0.17.1.tar.gz (829kB)
100% |ââââââââââââââââââââââââââââââââ| 829kB 1.6MB/s
Installing collected packages: future, pefile, altgraph, macholib, pywin32-ctypes, pyinstaller
Running setup.py install for future ... done
Running setup.py install for pefile ... done
Running setup.py install for pyinstaller ... done
Successfully installed altgraph-0.16.1 future-0.17.1 macholib-1.11 pefile-2018.8.8 pyinstaller-3.4 pywin32-ctypes-0.2.0
ããã¯pip / setuptoolsã®ãã°ã§ã¯ãªããšæããŸããPEP517ã®BuildEnvironmentã»ã¯ã·ã§ã³ãèªãã ãšããã pyproject.toml
宣èšãããäŸåé¢ä¿ãå©çšå¯èœã§ãã以å€ã¯ãç°å¢ã«ã€ããŠäœãæ³å®ãã¹ãã§ã¯ãªãããã§ãã
ãŸããã€ã³ã¹ããŒã«ãããŠããããã±ãŒãžãsetup.py
ããã€ã³ããŒãããããšã¯æªãç¿æ
£ã§ã¯ãããŸãããïŒ ããšãã°ãPyPAã®ãã®ããã±ãŒãžã¬ã€ãã§èª¬æãããŠããããã«ãããã±ãŒãžããŒãžã§ã³ã1ãæã§ç¶æããããã®ã¯ããã«åªããæ¹æ³ããããŸãã
pypa / setuptoolsïŒ1642ã§ã®è°è«ã§ã @ uranusjrãšç§ã¯äž¡æ¹ãšããããããå®è¡æã«.
ãsys.path
ã«ãããšããäºå®ã«é Œãã®ããããæ©äŒã«ãªãããšãæãã§ããŸããã Pythonã¹ã¯ãªãããäœæãã人ã
ãããæ確ãªã»ãã³ãã£ã¯ã¹ã«ç§»è¡ãå§ããŸãã
ããã§ã®äž»ãªåé¡ã¯ã pyproject.toml
ãååšããã ãã§ãPEP518ãšPEP517ã®äž¡æ¹ã«ãŠãŒã¶ãŒããªããã€ã³ããããããã«ãããã¯ãšã³ããæå®ããŠããªããŠããçªç¶æ°ããã»ãã³ãã£ã¯ã¹ãååŸããããšã§ãã
pip
ã®éšåã«é¢ãããã®æ±ºå®ã¯ãçŸæç¹ã§ã¯å
ã«æ»ããŸãããïŒ pyproject.toml
ã®ãã¬ãŒã³ã¹ã§PEP 518ããªããã€ã³ã§ãããããããŸããããå®éã«ãã«ãããã¯ãšã³ããæå®ããªãéããPEP 517ã¯ããªã¬ãŒãããŸãããïŒ
æ£çŽãªãšãããããã¯ããããšããã§å³ããç¶æ³ã§ããã setuptools
å Žåãããã pip
ãããã«ã€ããŠèŠåããæ¹ãç°¡åã ãšæããŸãã ä»ã®ãšããPEP517ããªããã€ã³ãã pyproject.toml
ã®ååšã20.0ãŸãã¯21.0ã®åŸã«PEP 517ãããªã¬ãŒãå§ãããšèšãå Žåã移è¡ã¬ã€ããäœæãã pip
èŠåã®çºè¡ãéå§ã§ããŸãã build-backend
ããæ¬ èœpyproject.toml
ãããŒãžã§ã³21.0ã®åŸããã«ãã¢ã€ãœã¬ãŒã·ã§ã³ã䜿çšããããã«ããã©ã«ãèšå®ãããŸãã®ã§æ³šæããŠãã ããsetuptools.build_meta
ã§ç§»è¡ã¬ã€ããåç
§ããŠãã ãã..."
ãŸããã€ã³ã¹ããŒã«ãããŠããããã±ãŒãžã
setup.py
ããã€ã³ããŒãããããšã¯æªãç¿æ £ã§ã¯ãããŸãããïŒ ããšãã°ãPyPAã®ãã®ããã±ãŒãžã¬ã€ãã§èª¬æãããŠããããã«ãããã±ãŒãžããŒãžã§ã³ã1ãæã§ç¶æããããã®ã¯ããã«åªããæ¹æ³ããããŸãã
å
¬å¹³ãæãããã«ããã®ã¬ã€ãã§ã¯ãã€ã³ã¹ããŒã«ãããŠããããã±ãŒãžãsetup.py
ããã€ã³ããŒãããããšãæŠç¥6ãšããŠå®çŸ©ããŠãããããããã¯ç¢ºãã«ããçšåºŠäžè¬çã§ãã ãã®æç¹ã§ããã®ãããªæŠç¥ããé¢ããå Žåã¯ããã®ããŒãžãæŽæ°ããŠãããå«ãŸãªãããã«ããå¿
èŠããããŸãã
pyproject.toml
ã®ååšã§PEP 517ãããªã¬ãŒãããšãã決å®ã¯ãæå³çãªéžæã§ããïŒè°è«ã¯ãããããPEP 517ã®å®è£
ã®åé¡ãŸãã¯PRã«é¢ãããã®ã§ããããä»ã¯ãããèŠã€ããæéããããŸããïŒã æããã«ãããã§èŠããã®ã«ç
§ãããŠå€æŽããããšã¯ã§ããŸãããç§ãã¡ã決å®ããçç±ãååã«èæ
®ããã«å€æŽããã¹ãã§ã¯ãããŸããã
Pipèªäœã¯ã setup.py
ããããžã§ã¯ããã£ã¬ã¯ããªãsys.path
ã«ãããšæ³å®ããã®ãæ£ãããã©ãããå€æããŸããïŒãããã¹ãã§ã¯ãããŸããïŒããã®ãããåã«pipãå€æŽããã®ã¯å°ãæ°ãé²ãŸãªãã®ã§ãã setuptoolsã¯ãããã¯ãšã³ãã䜿çšããããšãã«å¥ã®ããã©ã«ããããã·ã¥ãããããã§ãã setup.py
ã§ãã«ããããŠãããããžã§ã¯ãã®ã€ã³ããŒãã«ã¯å€ãã®åé¡ãããããšã«åæããŸããããããŸã§èŠåãããªã¬ãŒãããã®ã§ã¯ãªããããããã¯ãšã³ãã¯ãã®ã»ãã³ãã£ã¯ã¹ãç¶æããå¿
èŠããããšæããŸããã å¥ã®èšãæ¹ãããã°ãpipãããªãã®ææ¡ã©ããã«èŠåãããšããŠãããªããŠãŒã¶ãŒã¯ããã«ãã®åé¢ã¯ããã©ã«ãã§setuptools.build_meta
ã䜿çšããããšèªã¿ãã setup.py
ãããããžã§ã¯ããã€ã³ããŒãã§ããªããããšãæå³ããŸãã
å人çã«ã¯ãpyproject.tomlãã¡ã€ã«ã®ååšã«äŸåãããšããçŸåšã®ã¢ãããŒãã«åæããŸãã IMOã®åé¡ã¯ãããã±ãŒãžã³ã°ä»¥å€ã®ç®çã§pyproject.tomlã䜿çšããŠãã人ã ã«èµ·å ããŠããŸãã ãããã£ãŠãæ£ããæ¹æ³ã¯ãããã±ãŒãžåãããŠããªãããŒã«ãããã·ã¥ããŠå¥ã®æ§ææ¹æ³ãæäŸããããšã§ããããã«ããã人ã ã¯pyproject.tomlã䜿çšãããã©ãããéžæã§ããŸãã
Pipèªäœã¯ïŒãã¹ãã§ã¯ãããŸããããIMOã¯ïŒsetup.pyããããžã§ã¯ããã£ã¬ã¯ããªãsys.pathã«ãããšæ³å®ããã®ãæ£ãããã©ããã確èªããŸããããã®ãããsetuptoolsãããã·ã¥ããããšããçç±ã ãã§pipãå€æŽããã®ã¯å°ãæ°ãé²ãŸãªãã®ã§ããããã¯ãšã³ãã䜿çšããããšãã®ç°ãªãããã©ã«ãã
確ãã«ã pip
ã¯ã setuptools.build_meta
ããã¯ãåŒã³åºãããšã¯ã setup.py
ãåŒã³åºãããšãšå®å
šã«åçã§ãããå®å
šã«åçã§ãããšæ³å®ããŠããã ãã§ãã ããã§ãªãå Žåã¯ãã§ã«èŠãŠããŸããããç§ãã¡ïŒ setuptools
ïŒãsetuptools.build_meta
ã®å¥çŽããããã¯python setup.py
ãåŒã³åºãã®ãšåãã§ããã«ãããã©ããã¯ããŸã 確ç«ãããŠããªããšæããŸãã setup.py
çŽæ¥åŒã³åºããããããã¯ããŠã³ãããåé¢ããŒãžã§ã³ã§ã "ã«ãããå Žåã
ãã¡ããã setuptools
ã¯ãããã¯é¢æ°ã®ã³ã³ãã©ã¯ãã§ã¯ãªãã®ã§ãä¿®æ£ããŸããããšèšãããšãã§ãã pip
ã¯ãããã©ã«ãã§PEP517ã«èšå®ããããšã«ããŸããããšèšãããšãã§ããŸãããã°ã¯ä»ã®ãããžã§ã¯ãã«ãããšèšããŸããã調æŽããããšããå§ãããŸãã
èšãæãããšãpipãããªãã®ææ¡ã©ããã«èŠåãããšããŠãããªããŠãŒã¶ãŒã¯ããã«ãã®åé¢ã¯ããã©ã«ãã§setuptools.build_metaã䜿çšããããšèªã¿ããsetup.pyãããããžã§ã¯ããã€ã³ããŒãã§ããªããããšãæå³ããã®ã§ããããã 2ã€ã®äºå®ã¯ç§ã«ã¯ç¡é¢ä¿ã®ããã§ã...
ãããã¯é¢é£ããŠããå Žåãšé¢é£ããŠããªãå ŽåããããŸãããã»ãã³ãã£ã¯ã¹ã«ä»ã®å€æŽãããå ŽåããããŸãã ãã®ãããªèŠåã®ãã€ã³ãã¯ãããã«ããå£ãå¯èœæ§ã®ãããã®ã«ããã«ãªããã€ã³ããã®ã§ããã®ãã«ããã©ã®ããã«å®è¡ããããæ瀺ããŠãã ããããšããããšã§ãã ãããžã§ã¯ãã¯ããã«ãããã¯ãšã³ããäºåã«pyproject.toml
è¿œå ããçºçããå¯èœæ§ã®ããç Žæãäºåã«ä¿®æ£ã§ããŸãã
setuptools.build_meta_legacy
ãããªsetuptools
ããããŒãã®PEP 517ããã¯ãšã³ããäœæããŠãã«ãŒããã£ã¬ã¯ããªã«chdir
ã ãå
¥ãã setuptools.build_meta
ãåŒã³åºãããšãã§ããŸãã人ã
ã¯ãå€ãåäœãå£ãå§ããåã«å¿
èŠãªå Žåã«ã®ã¿ãå€ãåäœã«ãªããã€ã³ã§ããŸãã
å人çã«ã¯ãpyproject.tomlãã¡ã€ã«ã®ååšã«äŸåãããšããçŸåšã®ã¢ãããŒãã«åæããŸãã IMOã®åé¡ã¯ãããã±ãŒãžã³ã°ä»¥å€ã®ç®çã§pyproject.tomlã䜿çšããŠãã人ã ã«èµ·å ããŠããŸãã
ç§ãã¡ã¯PEP 517ãšPEP 518åé¢ããå¿ èŠããããšæãPEP 518ã®ã«å¯Ÿãããããã©ã«ãå€ãã¯ãPEPã®ããã§ãããæ瀺çã«ãªã¹ããPEP 517ã¯ãããã©ã«ãã®ããã¯ãšã³ããäœã§ãããã«ã€ããŠã¯äœãæå®ããŸããã
ã pyproject.toml
ã®ååšã«ããããã«ãã®åé¢ãéžæãããããšããå
šäœã«ã²ã©ãå«æªæãèŠããããšã¯ãããŸããããå®éã«èŠãŠã¿ããšãåé¢ããããã«ãã®äŸåé¢ä¿ãæå®ããããšãéžæãããšããèãã¯å¥œãã§ã¯ãããŸããsetuptools.build_meta
ç§ãå
¥ããŸãã
ãããã解決çã¯ãéããåå²ããããã¯ãšã³ããææžåãããŠããªãsetuptools.build_meta_legacy
ããã©ã«ãèšå®ããããšã§ãïŒããã¯setup.py
ã®ã»ãã³ãã£ã¯ã¹ãç¶æããããšããŸãïŒã ããããã°ãå°ãªããšãããŠãŒã¶ãŒãæ°ããã»ãã³ãã£ã¯ã¹ã䜿çšããããšãè¯å®çã«éžæããã®ãããããšãåã«ããã«ã€ããŠèããªãã£ãã®ããå€æããæ¹æ³ããããŸãã
èŠåã¡ãã»ãŒãžä»ãã®build_meta_legacy
ã¯ãç§ã«ã¯åççãªè§£æ±ºçã®ããã«æããŸãã èŠåãéåžžã«ç®ç«ãããŠïŒããšãã°ãã€ã³ã¹ããŒã«äžã«ãããããã°ãšããŠã¡ã³ããã«æåºããããã«ãŠãŒã¶ãŒã«å§ããïŒã移è¡ã®å®è¡æ¹æ³ãæ確ã«æ瀺ããããšããå§ãããŸãã
ãŸãããããã®æå³ïŒããã¯ãäŒæ¥ããããã§ã;-ïŒ-ã€ãŸãããããéçºè
ã¯ããã«ã€ããŠå°ã話ãåããåççãªã¢ã€ãã¢ã®ããã«èããããšããäžè¬çãªã³ã³ã»ã³ãµã¹ã«éããŸãããããŸã 確åºããèšç»ã§ã¯ãããŸããããããŠããããèµ·ããããã«å®éã«ã³ãŒããæžããŠãã誰ãã«äŸåããŠããŸãïŒã¯ãæ¯èŒçè¿
éã«ãã¹ãŠã®ãããžã§ã¯ããPEP 517ã«æž¡ããã¬ã¬ã·ãŒã³ãŒããã¹ãsetup.py
å®å
šã«ããããããããšã«åãæ¿ããŸãã setuptoolsããã¯ãšã³ããpip21.0ã§ã®ã¿äœæãããšïŒäžèšã®æšå¥šãªãªãŒã¹ã䜿çšããããïŒãå°ãªããšãããã«2幎ã¯å»¶æãããŸãã
äžæ¹ãPEP 517ã¯ãããã©ã«ãã®ããã¯ãšã³ããäœã§ãããã«ã€ããŠã¯äœãæå®ããŠããŸããã
æ¬åœã ããããããæç¹ã§ãpipã¯setuptoolsã®ç¹å¥ãªã±ãŒã¹ã®ãµããŒããçµäºããŸãã ã€ãŸããçµå±ã®ãšãããPEP 517ã®ïŒå°ãªããšãç§ãã¡ã«ãšã£ãŠã®ïŒèŠç¹ã¯ãããã³ããšã³ããããã¯ãšã³ãããåãé¢ãããã¹ãŠã®ããã¯ãšã³ããåçã®ç«å Žã«çœ®ãããšã§ãã ãã®ããããããè¡ããšãã¯åžžã«ãããã¯ãšã³ãããªãå Žåã¯ãšã©ãŒãçºçãããããããã©ã«ããéžæããå¿ èŠããããŸãïŒã¬ã¬ã·ãŒã®çç±ãããããã©ã«ãã§setuptoolsãéžæããŸãïŒã ããã§ã®è°è«ã¯ãç§ãã¡ããããè¡ããšãã§ãããããã§ãªãå Žåã§ã¯ãããŸããã
Pipã«ã¯çŸåšãã€ã³ã¹ããŒã«çšã®2ã€ã®ã³ãŒããã¹ããããŸããPEP517ãã¹ãšåŸæ¥ã®setup.py
ãã¹ã§ãã ãããã¡ã³ããã³ã¹ã®åé¡ãšæœåšçãªãã°ã®åå ã§ãã PEP 517ãã¹ã®äœ¿çšã確å®ã«ããããã«pyproject.toml
ãååšããå ŽåãPEP 517ãããã©ã«ãã«ããããšãéžæããŸããïŒãããžã§ã¯ããbuild-backend = setuptools.buid_meta
ãæ¥ãã§è¿œå ããå¯èœæ§ã¯äœããããçŸåšã®åäœããªããã°ã確çã¯æ¬¡ã®ããã«ãªããŸãã pipã®PEP517ã³ãŒããšsetuptoolsã®ããã¯ãšã³ãã®äž¡æ¹ã®ãã¹ãã¯ãé·æéãŒãã«è¿ããŸãŸã§ãïŒã setuptoolsããã¯ãšã³ããäžé©åã§ãã£ãïŒãŸãã«æ³å®ãããïŒã±ãŒã¹ã«æ£ç¢ºã«å¯Ÿå¿ããããã«ã --no-use-pep517
ã®åœ¢åŒã§ãªããã¢ãŠãããããŸãã
setuptoolsãsetup.py
ãšããã¯ãšã³ãã®éã«ã»ãã³ãã£ãã¯ã®éããæã¡ãããšã¯èª°ãäºæ³ããŠããªãã£ãã®ã§ãã»ãã³ãã£ãã¯ã®éããåé¿ããããã«--no-use-pep517
ãå¿
èŠã«ãªãå¯èœæ§ããããŸããããã©ã«ãã¯èæ
®ãããŠããŸããã§ããã
ãŸããsetuptools.build_meta_legacyã®ãããªsetuptoolsã§ããããŒãã®PEP 517ããã¯ãšã³ããäœæããŠãã«ãŒããã£ã¬ã¯ããªã«chdirããsetuptools.build_metaãåŒã³åºãããšãã§ããŸããããã«ããããŠãŒã¶ãŒã¯ãå£ãå§ããåã«å¿ èŠãªå Žåã«ã®ã¿ãå€ãåäœã«ãªããã€ã³ã§ããŸãã ã
ããã¯åççãªè§£æ±ºçãããããŸããã ãã ããå°ãªããšãéšåçã«ææžåããå¿ èŠããããŸããå°ãªããšããpipã¯ããããæ³å®ãããããã©ã«ãå€ã§ããããšãææžåããŸãã setuptoolsãããã¯ãšã³ããææžåããªããŸãŸã«ããããšãéžæãããã©ããã¯ãç§ãæšæž¬ãã圌ãã®éžæã§ãã
ãã以äžã®çè«çè°è«ãã©ãã»ã©åœ¹ç«ã€ãã¯ããããŸããã 確ãã«ããã以äžè¿œå ãããã®ã¯ãªããšæããŸãã 誰ãããããåé²ããããã®ã§ããã°ãããã©ã«ããåãæ¿ããPRãäœæããã®ãæåã®æ¹æ³ã§ããããããåãå ¥ãããã©ããã«ã€ããŠã®è°è«ã¯ããã«ç§»ãããšãã§ããŸãã
ãŠãŒã¶ãŒã®ããã«ãã®åé¡ã解決ããããšããŠããããã±ãŒãžã¡ã³ããã®å ŽåïŒ sys.path
ä¿®æ£ãå®è£
ããã·ã ãå
¬éããŸããã
https://pypi.org/project/setuptools-localimport/
ããŸãããã°ãããã¯äžæçãªãã®ãšããŠæ©èœããã®ã§ã解決çã«æ¥ãããšãªããããã©ã®ããã«é²ããããèããããšãã§ããŸãããŸãã¯ãpip 19.0ïŒPEP 517ãããã¯ããã«å€ãã®æ©èœãå«ãŸããŠããŸãïŒã®æ¡çšãäžå¿ èŠã«é ãããããšãã§ããŸãã
sys.pathä¿®æ£ãå®è£ ããã·ã ãå ¬éããŸããã
ãããïŒ æçµçãªä¿®æ£ã«é¢ä¿ãªããããã¯PEP517ããã¯ã·ã¹ãã ã®æè»æ§ã®æ¬åœã«è¯ãäŸã§ã:-)
ç§ã¯19.xã®äžã§ç§ã®pipããŒãžã§ã³ãããŠã³ã°ã¬ãŒãããããšã«ãã£ãŠãããä¿®æ£ããŸããããããŠç§ã¯ã€ã³ã¹ããŒã«ããããšããŸããããããŠããŸããããŸãã
3çªç®ã®ãŠãŒã¹ã±ãŒã¹ããããŸãïŒç¬èªã®ãã«ãããã¯ãšã³ããæäŸããŠããããã±ãŒãžã¯ã©ãã§ããïŒ äŸïŒsetuptoolsèªäœã¯ãã«ãèŠä»¶ãšããŠwheel
ã®ã¿ããªã¹ãããŸãïŒ
[build-system]
requires = ["wheel"]
build-backend = "setuptools.build_meta"
ãã¡ãããPEP 517ãåŠçããããã®pipã®ã³ãŒãããœãŒã¹ãã£ã¬ã¯ããªãsys.path
è¿œå ããªãå Žåãããã¯å€±æããŸãã
PEP 517ããïŒ
ã¢ãžã¥ãŒã«ãã¹ãã€ã³ããŒããããšãããœãŒã¹ããªãŒãå«ããã£ã¬ã¯ããªã¯æ€çŽ¢ããŸããããã ãããããsys.pathã«ããå Žåãé€ããŸãïŒããšãã°ãPYTHONPATHã§æå®ãããŠããããïŒã Pythonã¯ç¶æ³ã«ãã£ãŠã¯èªåçã«äœæ¥ãã£ã¬ã¯ããªãsys.pathã«è¿œå ããŸãããããã¯ãšã³ãã解決ããã³ãŒãã¯ããã«ãã圱é¿ãåããªãã¯ãã§ãã
ããã¯ïŒç§ã«ãšã£ãŠïŒããªãæ確ã«èšã£ãŠããŸããããããžã§ã¯ãã¯build-backend
解決ãããšãã«ãèªåã®ãããžã§ã¯ããã£ã¬ã¯ããªã衚瀺ã§ãããšæåŸ
ãã¹ãã§ã¯ãããŸããããã®ãããsetuptoolsã¯requires
IMOã«èªåèªèº«ãè¿œå ããå¿
èŠããããŸãã ã¯ããããããããšã¯åŸªç°çã§ããããšãç解ããŠããŸãã ããããããèªäœãæ§ç¯ãããã«ãããã¯ãšã³ãã¯ãæ¬è³ªçã«ããªã埪ç°çã§ã-ãããã¯ç¢ºãã«éåžžã®ã±ãŒã¹ã§ã¯ãããŸããã
åãã»ã¯ã·ã§ã³ã§ããã«ãããŒã«ããããžã§ã¯ããã£ã¬ã¯ããªããã«ãç°å¢ã®sys.path
ã«ããããšãæåŸ
ããŠã¯ãªããªãããšã確èªããŠããããã§ãã
ããã¯--no-binary :all:
ã©ã®ããã«æ©èœããŸããïŒ
@pfmooreç¶æ³ã®å€åœ¢ã¯ãããã±ãŒãžãã«ã¹ã¿ã ãã«ãã·ã¹ãã ãæäŸããããšã§ãã ãã«ãã·ã¹ãã ã¯ã€ã³ã¹ããŒã«ãããŠããŸããïŒãããŠbdistã®äžéšã§ã¯ãããŸããïŒããããããããã€ãã®ãã«ãããã»ã¹ãã«ã¹ã¿ãã€ãºããããã«sdistã«ä»å±ããŠããŸãã ããã¯æå¹ãªãŠãŒã¹ã±ãŒã¹ã§ããããããšãã¡ã³ããã¯ã«ã¹ã¿ã ãã«ãã·ã¹ãã ãåå¥ã®ããã±ãŒãžãšããŠå ¬éããå¿ èŠããããŸããïŒ
ç·šéïŒã®ãããªãã®
project/
custom_build.py
src/
my_package/
__init__.py
...
pyproject.toml
[build-system]
requires = []
build-backend = "custom_build"
# Maybe the custom backend specifies metadata like thisâŠ
[tool.custom_build.metadata]
name = "my-package"
dependencies = []
packages = ["my_package"]
ãããã解決çã¯ããã«ãäžã«ã¢ãžã¥ãŒã«ãèŠã€ããå Žæã瀺ãããã«ãæ°ãããªãã·ã§ã³ã®æ§æãè¿œå ããããšã§ãã
[build-system]
requires = []
build-backend = "custom_build"
build-backend-findpath = ["build_systems"] # Put custom_build.py above in a subdirectory.
æ§æã®ããã©ã«ãã¯[]
ïŒç©ºã®ãªã¹ãïŒã§ããã€ãŸãããã¹ã¯è¿œå ãããŸããïŒã€ãŸããçŸåšã®åäœãšåãã§ãïŒãããããžã§ã¯ãã¯ãã¹ãè¿œå ããŠãã«ãã·ã¹ãã ãããŒã«ã«ã§èŠã€ããããšãã§ããŸãã
build-system
ãå®å
šã«çç¥ãããŠããå Žåãã»ã¯ã·ã§ã³ã®ããã©ã«ãã¯æ¬¡ã®ãšããã§ãã
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
build-backend-findpath = [""]
pipã¯ãèŠå/æ å ±ã¡ãã»ãŒãžã衚瀺ããŠããŠãŒã¶ãŒã«ç§»è¡ããããã«æ瀺ã§ããŸãïŒããã¥ã¡ã³ãããŒãžãžã®ãªã³ã¯ãå«ãŸããŠããå¯èœæ§ããããŸãïŒã
ãã®ãœãªã¥ãŒã·ã§ã³ã®è¿œå ã®å©ç¹ã¯ããã¹ãŠãpipïŒå®éã«ã¯ãã³ããŒã®pep517ã¢ãžã¥ãŒã«ïŒã§å®è¡ã§ããããšã§ãã setuptoolsãæ¢åã®å£ãããããžã§ã¯ããå€æŽããå¿ èŠã¯ãããŸããã
ç¶æ³ã®å€åœ¢ã¯ãããã±ãŒãžãã«ã¹ã¿ã ãã«ãã·ã¹ãã ãæäŸããããšã§ãã
æ£çŽããããŸããã ããã¯ç§ãèªåèªèº«ã«ã€ããŠèããç¶æ³ã§ã¯ãããŸããã PEPã®äœè ããããèæ ®ãããã©ããã¯ããããŸãããPEPãéçºãããŠãããšãã®åé¡ã«ã€ããŠã®è°è«ã¯èŠããŠããŸããã
å®éã確èªãããšãããPEP 517ã¯æ瀺çã«ïŒ build-backend
ã®ã»ã¯ã·ã§ã³ã§ïŒãã¢ãžã¥ãŒã«ãã¹ãã€ã³ããŒããããšãããšã«ããsys.pathã«ããå Žåãé€ããŠããœãŒã¹ããªãŒãå«ããã£ã¬ã¯ããªã調ã¹ãŸããã ãããã¯ãããªãŒå
ã®ããã¯ãšã³ããæã€ããšãæ瀺çã«æšå¥šãããŠããªãããšãæå³ããŸãã 誰ãããããååã«æªæã®ããã³ãŒãã§åé¿ã§ãããã©ããã¯ããããŸããïŒããããç§ã¯ããã¯æããªãïŒã
PEP 517ãéçºãããšãã«äºæ³ããããŠãŒã¹ã±ãŒã¹ã¯ãããã¯ãšã³ããPyPIïŒãŸãã¯ã«ã¹ã¿ã ã€ã³ããã¯ã¹ïŒã®ãã€ãŒã«ãšããŠåºè·ããããã«ãç°å¢ã«ããŠã³ããŒãããã³ã€ã³ã¹ããŒã«ãããããšã§ããã ããã¯ãšã³ããã©ã®ããã«æ§ç¯ããããã¯æããã«ç¯å²å€ã§ãã-ç§ã®å人çãªæšæž¬ã§ã¯ãããã¯ãšã³ãã¯PEP 517ã¡ã«ããºã ã䜿çšãããäœã¬ãã«ã®ã³ãã³ãïŒããšãã°ã setup.py bdist_wheel
ãŸãã¯flit build
ïŒã䜿çšããŸãã ïŒã PEP 517ããã¯ãšã³ããååž°çã«äœ¿çšããŠããèªäœãæ§ç¯ããããšã¯ãè€éãããã¹ãããã®ããã«èŠããŸããã ããã¯ãpipã§ã®PEP 518å®è£
ã®äžéšãšèŠãªãããŠããŸããïŒããã¯ãšã³ããsdistãšããŠåºè·ãããããèªäœã䜿çšããŠãã«ãããå Žåããã©ãŒã¯ç匟ãæªçšãããå¯èœæ§ããããŸãããã€ãŒã«ãšããŠé
åžãããŠããªãããã¯ãšã³ãããµããŒãããåã«ããããé²ãå¿
èŠããããŸããã ïŒãã ããPyPIããããã¯ãšã³ããããŠã³ããŒãããå Žåã®ã¿ã
tl; dr; ç§ãæäŸã§ããã®ã¯ãåœæã®è°è«ãæãåºãããšã ãã§ããå®éã®èæ¯ã«ã€ããŠã¯ãã¢ãŒã«ã€ããæ€çŽ¢ããã»ãããããããããŸããã
PEPã®äœè ããããèæ ®ãããã©ããã¯ããããŸãããPEPãéçºãããŠãããšãã®åé¡ã«ã€ããŠã®è°è«ã¯èŠããŠããŸããã
ç§ã¯ã¢ãŒã«ã€ããèŠå§ããã°ããã§ããããã®è³ªåã¯å®éã«ããã»ã¹ã®çµããã«åãã£ãŠïŒãŸãã¯å°ãªããšãååã«ïŒè©³çŽ°ã«è°è«ãããããã§ãã ã¢ãŒã«ã€ãã衚瀺ããã®ã«æé©ãªWebââãµã€ãã¯ããããŸãããããã®è³ªåã«ã€ããŠåã³è°è«ãå§ãŸã1ã€ã®ãã€ã³ãããããŸãïŒ2017幎7æ28æ¥ïŒã
https://mail.python.org/pipermail/distutils-sig/2017-July/031109.html
https://www.mail-archive.com/[email protected]/msg26624.html
ããšãã°ããã®ç¹å®ã®é»åã¡ãŒã«ã¯æ¬¡ã§çµãããŸã-
ãã§ã«PEP517ã§ã©ãã»ã©ã®åé¡ãçºçããŠããã®ããèãããšãPEP 517ã«ãã£ã¬ã¯ããªãsys.pathã«ãªãããã«æ瀺ããpython-pathå°çšã«å°ããã©ããŒã¢ããPEPãäœæããæ¹ãçã«ããªã£ãŠãããããããŸããã
æçµçãªè©æ±ºãäœã§ããããèŠã€ããããç¥ããããŸãããä»ã®äººã«ãèªåã§èªãã§ãããããšããå§ãããŸãã
ãããïŒ ãããèŠã€ããŠãããŠããããšã:-)
ã ããç§ã¯ããããã®é»åã¡ãŒã«ããã£ãšèªãã ãå°ãªããšã8æ29æ¥ãŸã§ã¹ãããã§ãããšæããããã¯ã¯sys.pathã®ãœãŒã¹ãã£ã¬ã¯ããª_out_ãé¢ããããšã«ã€ããŠã³ã³ã»ã³ãµã¹ãããããšã瀺åããŠããããã ã
https://mail.python.org/pipermail/distutils-sig/2017-August/031413.html
ïŒäžäººãã€ã人ã
ã¯ããµããšã«ã®è°è«ã確信ããããã«ãªããŸãããïŒ
ãã ããäžèšã®ãªã³ã¯å ã®åãã¡ãŒã«ã§ãããã¯ã¯æ¬¡ã®ããã«è¿°ã¹ãŠããŸã:)
- ãããçç¥ããããšãæ¬åœã«åé¡ã§ããå Žåã¯ãsetup.pyããã¯ãšã³ãã®å®è£ ã®äžéšãšããŠããã«ãããã§ãããã
ãããé»åã¡ãŒã«ããã®ããå®å šãªæ®µèœã§ãïŒ
ç§ã¯ãæã ã¯åæã®äžç°ãšããŠãæ°ããäœããåŠã¶ç§ãã¡ã®ãã£ã³ã¹ãæ倧åãæå³ããåºçºç©è³ªãšããŠããçŸåšã®ãã£ã¬ã¯ããªãæå®ãããããã¯ãšã³ããã€ã³ããŒãããåã®sys.pathã«ãããŠããªãããšã確èªããªããã°ãªããªãããã³ããšã³ãããåªå ããŠè§£æ±ºããã®ãããããèããããšãã§ãããšæããŸãã®ã§ãæ«å®çã«æ¿èªãããAPIã®ããŒã«ã¢ãŠãã
ãã®èŠçŽãå€æŽããã¡ãŒã«ãåŸã§ãããã©ããã¯ãŸã ããããŸãããããã®åŸã®ãããã¯ã«é¢ããã¡ãŒã«ã¯ããã»ã©å€ããããŸããã
@cjerdonekã®ããã«ã¢ãŒã«ã€ãããããŒã«ããŠãããŠããããšãã åé¡ã«ã€ããŠã®ç§ã®çŸåšã®ç解ãè¿°ã¹ãïŒ
setup.py
ãã¡ã€ã«ã¯ãçŸåšãå®è¡æã«çŸåšã®ãã£ã¬ã¯ããªãsys.path
ã«ãããšæ³å®ããŠããããããžã§ã¯ããã€ã³ã¹ããŒã«æã®äŸåé¢ä¿ãšããŠåŠçãããããå¥åŠãªããŒãã¹ãã©ããã®åé¡ãçºçããŸããsys.path
æé»çã«è¿œå ããŠã¯ãªããªããšæ瀺çã«è¿°ã¹ãŠããŸãïŒããã¯ãšã³ãã«ã€ããŠã¯äœãè¿°ã¹ãŠããŸããïŒpip
19.0ã¯ã build-system
ã»ã¯ã·ã§ã³ã®ãªãpyproject.toml
ãã setuptools
ããã¯ãšã³ããæå®ããbuild-system
ã»ã¯ã·ã§ã³ãšåçã§ãããšèŠãªããŸããsetuptools
PEP 517ããã¯ãšã³ãã¯çŸåšã®ãã£ã¬ã¯ããªãsys.path
ãè¿œå ããŸããïŒäžèšã®ãã€ã³ã1ããé¢ããããšã¯æãŸããå°æ¥ã®ç®æšãšèŠãªãããããïŒpip
ã19.0æªæºã«åºå®ããããšãšã --no-use-pep517
ãªãã·ã§ã³ãæ瀺çã«èšå®ããããšã§ãã ãã ãã人ã
ã¯ã pip
ãã¢ããã°ã¬ãŒããããšãã«ããç Žæããããšãæåã«çºèŠããåŸã§ã®ã¿ãããããçºèŠããŸããæ©èœçãªèŠ³ç¹ãããç§ãã¡ãå°å
¥ãããéèŠãªå€æŽã¯ãã build-system
ã»ã¯ã·ã§ã³ã®ãªãpyproject.toml
ãã®å Žåã setup.py
ãå«ããã£ã¬ã¯ããªãæçµçã«ãªãããšã ãšæããŸãåã³sys.path
ã«ã ãããåŠçããã«ã¯ãäž»ã«2ã€ã®æ¹æ³ããããŸãã
pip
ãå
¥æããŠãã ããã ããã«ã¯ãåäœãããã³ããšã³ãã«äŸåããããšããäžå¹žãªå¯äœçšãããããã¹ãŠã®ããã³ããšã³ããåãåé¿çãå®è£
ããªãéããæ¢åã®ãããžã§ã¯ãã®ã€ã³ã¹ããŒã«ã«å€±æããå¯èœæ§ããããŸããsetuptools
PEP 517ããã¯ãšã³ããååŸããŠã build-system
ã»ã¯ã·ã§ã³ã®pyproject.toml
ãæ€æ»ãã setup.py
ãã£ã¬ã¯ããªãsys.path
æ¿å
¥ããŸããã»ã¯ã·ã§ã³ãšãã¹ãšã³ããªã®äž¡æ¹ãæ¬ èœããŠããå Žåã ã build-system
ã»ã¯ã·ã§ã³ããªããå Žåãæ£ããåŠçããsetuptoolsã®æå°ããŒãžã§ã³ãæå®ããå¿
èŠãããããããã®ç¶æ³ã§ãæ°ããpip
ãå¿
èŠã§ããäžå¹žãªãã¶ã€ã³ã³ãŒããŒã«èªåèªèº«ãå¡ãã€ã¶ãããšãªãããšã³ããŠãŒã¶ãŒã®ããã«ã§ããã ãæ©ãç©äºãæ©èœãããããã«ãç§ã¯å®éã«3ã¹ãããã®è§£æ±ºçãææ¡ããŸãã
pip
ãªãªãŒã¹ïŒ19.0.1ïŒïŒãå®è¡ããŠãã build-system
ãšã³ããªããªããå Žåã®è¿œå ã®sys.path
ãšã³ããªãè¿œå ããŸãã ãã®æç¹ã§ãäºææ§ã®åé¡ã¯ãšã³ããŠãŒã¶ãŒã«ãšã£ãŠã»ãšãã©ãªããªãã¯ãã§ããsetuptools
ãªãªãŒã¹ãå®è¡ããŸããpip
ãªãªãŒã¹ã§ã¯ãã build-system
ãšã³ããªããªããã±ãŒã¹ãå€æŽããŠç¹å¥ãªã±ãŒã·ã³ã°ãåé€ãã代ããã«setuptools
ããå³å¯ãªæå°ããŒãžã§ã³ãèšå®ããŸãããã®ææ¡ã¯ã setuptools
PEP 517ããã¯ãšã³ããsetup.py
äžäœäºææ§ã®åé¡ãåŠçããããã®ãé©åãªãå Žæã§ãããšæããšããäºå®ã«åºã¥ããŠããŸããã pip
ã調æŽããããšãèããŠããŸããçŽæ¥çãªå€æŽã¯ãçæçã«ã¯ã¯ããã«åçŽãªå€æŽã«ãªãå¯èœæ§ãé«ããã¢ãŒããã¯ãã£çã«æãŸããä¿®æ£ãè¡ãããŠããéãåé¡ãå«ãŸããå€æŽã§ãã
pypa / setuptoolsïŒ1652ã§build_meta_legacy
ããã¯ãšã³ããäœæããŸããã pip
ãããã©ã«ãã®ããã¯ãšã³ããšããŠsetuptools.build_meta_legacy
ã䜿çšããããã«åãæ¿ããã®ã§ããã°ãç§ã¯æ¬åœã«ããã奜ã¿ãŸãããçµã¿èŸŒã¿ã®ãã¬ã¬ã·ãŒã·ã ãããã¯ãšã³ããäœæããããšã¯ãç§ãå¿«é©ã«è¡ããç¯å²ã§ãããšæããŸãsetuptools
ã ã¡ã€ã³ã®setuptools
PEP 517ããã¯ãšã³ãã§å®å
šãªã python setup.py install
ãšãã¥ã¬ãŒã·ã§ã³ããç¡æéã«ãµããŒãããããšã«åºå·ããããããŸããã
setuptoolsãããTBHã§ãã€ãã£ãã«ã¹ã¯ãªãããå®è¡ããããšããšãã¥ã¬ãŒãããããªãçç±ã¯å°ãæ··ä¹±ããŠããŸãã python setup.py bdist_wheel
ãæ£ããæ©èœããå Žåããšã³ããŠãŒã¶ãŒã«æ··ä¹±ãæãããã«æãããŸããã pip wheel
ã¯æ©èœããŸããïŒéã¬ã¬ã·ãŒãã«ãããã¯ãšã³ãã«èšå®ãããŠãããšä»®å®ïŒã
çè«çæ ¹æ ã¯äœã§ããïŒ
çè«çæ ¹æ ã¯äœã§ããïŒ
ç§ã®é·æçãªèšç»ã¯ã setup.py
ãã¹ãŠã®çŽæ¥åŒã³åºããå»æ¢ããPEP 517ããã³ããšã³ããŸãã¯åçã®ãã®ïŒä»ã®ã³ãã³ãã®å ŽåïŒã«ããéæ¥åŒã³åºããåªå
ããããšã§ãã ç§ãã¡ã¯ããã¹ãŠã®éé¢ç°å¢ãã®äžçã«ç§»åããŠããå Žåã¯ãç§ãã®ã»ãã³ãã£ã¯ã¹ä¿ã€ããã«åŒ·å¶ãããªãããã«ããsetuptools
åŒã³åºããšäºææ§ã®ããã³ãã³ãã®åŒã³åºãpython setup.py
åãçç±PEPã®ããã«ã 517ã¯ç¹ã«ãããã³ããšã³ãã¯ãããè¡ãã¹ãã§ã¯ãªããšè¿°ã¹ãŸãããããã¯ããã«ãã®åé¢ãç Žããäžè¬çã«æãŸãããªãç¶æ³ãåŒãèµ·ããå¯èœæ§ããããŸãã
ã¢ã³ããã¿ãŒã³ã®äžéšãé€ããŠããããå¿
èŠã«ãªãããšã¯ããªããŸãã ãšæããŸãã ãããæ£åœã«å¿
èŠãšããŠãã人ã¯èª°ã§ããã»ããã¢ããã¹ã¯ãªããã§sys.path
ãéåžžã«ç°¡åã«æäœã§ããŸãã
ã¡ããã©ã¡ã¢ãšããŠãPEP 517ãããã¹ãŠã®ãã«ãããŒã«ãžã®ã¢ã¯ã»ã¹ãããã¯ãä»ããŠå¯èœã«ãªããšããèšèšç®æšãæã£ãŠãããšã¯æããŸããã ããšãã°ãflitã«ã¯ç¬èªã®ã³ãã³ãã»ããflit build
ãªã©ããããããããéæšå¥šã«ããã€ããã¯ãããŸããã ãããã£ãŠãPEP 517ã®èåŸã«ããæå³ããããŒã«åºæã®ã³ãã³ãã䜿çšããå¿
èŠããããšãããšããžã±ãŒã¹ãèŠã€ããããšãã§ããå¯èœæ§ããããŸãã æãããªäŸã¯ããã¯ãšã³ãèªäœã®ãã«ãã§ãïŒåè¿°ã®ãšããïŒããç·šéå¯èœãªã€ã³ã¹ããŒã«ãã€ã³ãã¬ãŒã¹ãã«ãïŒä»¥åã®ãã«ãã®ã¢ãŒãã£ãã¡ã¯ããåå©çšïŒãªã©ã®ä»ã®ã±ãŒã¹ïŒçŸåšæšæºåãããŠããŸããããå°æ¥ã®PEPã¯ããã¯ãè¿œå ããå¯èœæ§ããããŸãïŒãååšããŸãã
ãã¹ãŠã®ããŒã«ããbuildsdistããšãbuildwheelãããµããŒãã§ãããšããåæãåŸãã®ã¯éåžžã«å°é£ã ã£ãã®ã§ãæšæºæäœã®ãªã¹ãããã以äžæ¡åŒµããããšã¯ããã«ã¯èµ·ãããŸããã
ã¡ããã©ã¡ã¢ãšããŠãPEP 517ãããã¹ãŠã®ãã«ãããŒã«ãžã®ã¢ã¯ã»ã¹ãããã¯ãä»ããŠå¯èœã«ãªããšããèšèšç®æšãæã£ãŠãããšã¯æããŸããã
ããã¯ç§ãææ¡ããããšã§ã¯ãªããå°ãäœè«ã§ãã ç§ã®ãã€ã³ãã¯ãåé¡ãå¿
èŠPEP 518ã¯ãŸãããã¹ãŠã®ããã«ãããäžè¬çã«ååšããããšããšããããšã§ããsetup.py
ã³ãã³ããããã³ããããæé«é¢ãåŒã³åºããã人ã
ã移åããããšã§è§£æ±ºãããsetup.py
ãã¹ãŠã§ã flit
ããµãã³ãã³ããè¿œå ããããã«PEPãå¿
èŠãšããªãã®ãšåãæ¹æ³ã§ãããè¡ãããã«ãæšæºã¯å¿
èŠãããŸããã
ãããããããŸããã 誀解ããŠãã¿ãŸããã
@ncoghlanã®ææ¡ããã移è¡ã¯ç§ã«ã¯è¯ãããã§ãã 誰ãåé¡ããªããã°ãå ã«é²ã¿ãŸãããã
ã¢ãŒã«ã€ã@cjerdonekãæãäžããŠãããŠããããšãïŒ
setuptoolsã§ãããä¿®æ£ããPRããã§ã«ããããšãèãããšïŒã¬ã¬ã·ãŒããã¯ãšã³ãã®å°å ¥ãéããŠïŒã äžèšã®ã¹ããã1ãã¹ãããããªãçç±ã¯ãããŸããïŒ setuptoolsãåé¢ããããã«ãç°å¢ã«ã€ã³ã¹ããŒã«ããŠããã®ã§ãããæè¿ã®ããŒãžã§ã³ã«äŸåããããšã¯åé¡ã«ã¯ãªããªãã¯ãã§ãã
äžèšã®ã¹ããã1ãã¹ãããããªãçç±ã¯ãããŸããïŒ
ãããã çŸåšã®æå°å¿ èŠããŒãžã§ã³ãçŽæ¥ãã³ãã§ããŸãã
ç§ã®ç§»è¡èšç»ã¯ã人ã
ãsetuptools
åŽã§é·å¯¿åœã®ç§»è¡ã¡ã«ããºã ãç解ããããã«ããå€ãã®æéãå¿
èŠãšãããšããä»®å®ã«åºã¥ããŠããŸã-@ pganssleã®å°çšã®ç§»è¡ããã¯ãšã³ãã¯ãã®é¢ã§ææã«èŠããŸãããç§ã¯ãã®å€æŽãã¬ãã¥ãŒãããŠããéãçŸç¶ãç¶æããããšãçã«ããªã£ãŠããã®ãããããŸããã
ãšã¯ããã pip
ã§ã®PEP 517ã®å®è£
ãã©ã®ããã«æ©èœãããã«ã€ããŠã®è©³çŽ°ã¯ããããããªããããããã³ããšã³ãã§ã®åé¡ã®åé¿ã¯ç°¡åã§ãããšããç§ã®ä»®å®ã¯æ£ãããªãå¯èœæ§ããããŸãã
ããã¯ãšã³ãã¯ãµãããã»ã¹ã§å®è¡ãããããïŒå®éã«ã¯ããã³ããŒã®pep517
ãããžã§ã¯ãã䜿çšããŠãéæ¥ã¬ãã«ãè¿œå ããŸãïŒã sys.path
ãã©ã®ããã«èšå®ãããã¯ãŸã£ããããããŸãããããã¯ãšã³ãããã¯ã å°ãªããšãã PYTHONPATH
ãå«ããå¿
èŠããããŸããããã¯ããŠãŒã¶ãŒããã§ã«PYTHONPATH
èšå®ããŠããå Žåãšãåé¢ã³ãŒãããããã©ã®ããã«äœ¿çšãããã«ã€ããŠå¿é
ããããšãæå³ããŸãã
åºæ¬çã«ãpipã«sys.path
ãèšå®ããããšã¯ãæããã«éèŠãªããšã ãšæããŸãã 詳现ã調ã¹ãæéããªãå¯èœæ§ããããŸããããããèªåã§äœæããïŒãããŠé©åã«ãã¹ããããŠããããšã確èªããïŒããšã¯ã»ãšãã©ãããŸããã
ä¿®æ£ãããsetuptoolsããã¯ãšã³ããå ¥æããããšãæéã®æ¹æ³ã ãšæããŸãã
ç§ã®é·æçãªèšç»ã¯ãsetup.pyã®ãã¹ãŠã®çŽæ¥åŒã³åºããå»æ¢ããPEP 517ããã³ããšã³ããŸãã¯åçã®ãã®ïŒä»ã®ã³ãã³ãã®å ŽåïŒã«ããéæ¥åŒã³åºããåªå ããããšã§ãã
@pganssleçãã æç¶ãäžã®setup.py
ã¯æ»ãªãªããã°ãªããŸããã äœããã®çç±ã§ååšããŠã¯ãªããŸããã ãã®ãæè»æ§ãã¯ãçã¿ãšæ
éã®ç¡éã®åå ã§ããããã§ãã setup.py
ã移è¡ããããšã¯äžå¯èœã§ãããããPythonããã±ãŒãžã³ã°ã«é¢ãããã¹ãŠã®åé¡ãçºçããŸãã
setup.py
ãpackage.json
眮ãæããããã«å¥ã®ããã±ãŒãžèšè¿°åœ¢åŒã®ä»£ããã«Pythonã»ã¯ã·ã§ã³ãè¿œå ããŸãã
å°ãªããšãã ==1.x
ããŒãžã§ã³æå®åã䜿çšã§ã
@techtoniké¢ããŠãã ããã ç§ãåå ããŠããã©ã®ãããžã§ã¯ãã§ããããªãã®é建èšçãªè²¢ç®ã¯æè¿ãããŸããã
ïŒ6210ã«åãçµãã§ãããšã pip
ã¬ãã«ã§ããã«å¯ŸåŠããã®ãã©ãã»ã©é£ãããã«ã€ããŠã®ç§èªèº«ã®è³ªåã«çããããšãã§ããŸãã課é¡ã¯ããœãŒã¹ãã£ã¬ã¯ããªãsys.path[0]
ãšããŠæ¿å
¥ããå¿
èŠããããã©ããã«é¢ããæ
å ±ã§ãã pyproject.toml
ãèªã¿åãã³ãŒãããPEP 517ããã¯åŒã³åºãå
ã«ãã³ããªã³ã°ãããããããå®éã®ã€ã³ããã»ã¹ã©ãããŒã¹ã¯ãªããã«ãã³ããªã³ã°ãããå¿
èŠããããŸãã
ãããã¯å€§ããªã¢ãŒããã¯ãã£ã®å€æŽãªãã§å®è¡ã§ããŸãïŒæåã®éšåã®ãã«ãããã¯ãšã³ãåã®pip._implicit.
ãã¬ãã£ãã¯ã¹ãåŸè
ã®PEP517_SYS_PATH_0
env varïŒãããã³ããŒã®pep517
äžæçã«å€æŽããããšãæå³ããŸãsetuptools
ã®é©åãªä¿®æ£ã®æºåãã§ãããŸã§ã pep517
ã³ãŒãã
ç§ã®ç§»è¡èšç»ã¯ãsetuptoolsåŽã§é·å¯¿åœã®ç§»è¡ã¡ã«ããºã ãç解ããããã«äººã ãããå€ãã®æéãå¿ èŠãšãããšããä»®å®ã«åºã¥ããŠããŸã-@ pganssleã®å°çšã®ç§»è¡ããã¯ãšã³ãã¯ãã®é¢ã§ææã«èŠããŸããããããçã«ããªã£ãŠãããã©ããã¯
ã¯ããåæããŸãã ç§ã¯distutilsã®æçš¿ã§ããã ããææ¡ããŸãããç§ãéèŠã ãšæã2ã€ã®ããšããããŸãïŒ
å人çã«ã¯ã移è¡ããžãã¯ãé
眮ããããŸã§ããpyproject.tomlã®ååšã«ãã£ãŠPEP517ã«ãªããã€ã³ãããããžãã¯ãåé€ããã®ãæ£ãããšæããŸãã setuptools
ã§ã®å€æŽã¯ããã®å
¬éAPIã«åœ±é¿ãåãŒãã pip
ã§ã¯ãåŸæ¹äºææ§ã®ãªãå€æŽã§ããããšãå€æããããšãé
ãããã ãã§ããããšãèãããšãç§ã«ã¯çã«ããªã£ãŠããŸãã setuptools
ä»åŸã®æ¹åæ§ãæ€èšããŠããéã«ã pip
ã¯ã€ãã¯ãã£ãã¯ã¹ãå®è¡ããŸãã
äž¡æ¹ã®ã¢ãããŒããããŒã«ã«ãã·ã³ã§åäœããŠããç¶æ
ã§ãå
ã®åé¡ã®ããPyInstaller==3.4
èŠä»¶ã«å¯ŸããŠïŒ6210ãšïŒ6212ã®äž¡æ¹ããã¹ãããŸããã
ïŒ6212ã®å€±æããã¹ãã»ããã¢ããã®åé¡ãªã®ãããããšãsetuptoolsãã¬ãªãªãŒã¹ã«ããã«åé¡ãããã®ãââã¯ããããŸãããããã®è§£æ±ºçã«èªä¿¡ãæã€åã«ãããã«çµ±åäœæ¥ãè¡ãå¿
èŠãããããšã ããç¥ã£ãŠããŸããç§ã¯ä»ïŒ6210ã«èªä¿¡ãæã£ãŠããŸãããããã®å¯äžã®ééãã¯ã pip
ãæ°žé ã«æã¡æ©ããªããŠã¯ãªããªããšããæãããäºææ§ããã¯ã ãšããããšã§ãã
--no-cache
ããïŒ6212ã§å€±æããassert
åå ã§ããããã§ãã 代ããã«--cache-dir
ãã¹ããããšãããŒã«ã«ãã¹ããæåããŸããïŒ https ïŒ
ïŒç§ã¯ç¡ç ãšä»äºã®ããã«çŽ18æéãªãã©ã€ã³ã«ãªãã®ã§ããããŸã§ã®éãïŒ6210ãŸãã¯ïŒ6212ã®ã©ã¡ãããçã«ããªã£ãŠããæ¹ã§èªç±ã«èµ°ã£ãŠãã ããïŒ
ç¶æ³ãããããåæ ããããã«ã¿ã€ãã«ãæŽæ°ããŸããã PRãããããšã@ncoghlan ïŒ
ã¢ãã¬ãŒãããŒãïŒç§ã¯å ã«é²ãã§ãéçç£çãªã³ã¡ã³ãïŒããã³ããããžã®å¿çïŒãããªããããã¯ããšããŠé衚瀺ã«ããŸããããããã®è¡ã«æ²¿ã£ãä»åŸã®ã³ã¡ã³ãã«ã€ããŠãããããŸãã ã¢ãã¬ãŒã·ã§ã³ã«ã€ããŠè©±ãåãããå Žåã¯ãæ°ããåé¡ãæåºããããã¡ãŒã«ã§pingããŠãã ããã ãã®ã¹ã¬ããã¯ãã¢ãã¬ãŒãã«é¢ããåé¡ãæèµ·ããã®ã«é©åãªå Žæã§ã¯ãããŸããã
ãŸããéè€ãäœæãã人ãé¿ããããã«ã€ããŠç¥ã£ãŠããããšãæ確ã«ç€ºãããã«ããããå ã«é²ããŠåºå®ããŸããã
pep517ããªããã€ã³ããå Žåã§ããããã¯çºè¡šãããŠããªãåäœã®å€æŽã§ãããããã©ã€ãã©ãªãæ¢ã«ãªããã€ã³ãããŠããå Žåã§ãã©ã€ãã©ãªãç ŽæããŸãïŒããšãã°ã PyInstaller
ãåç
§ïŒã ã©ã€ãã©ãªãpep517ãã«ããžã®ãªããã€ã³ã宣èšãã sys.path
ã§èŠã€ãããšäºæ³ããããã®ãããŒã«ã«ã«ã€ã³ããŒãããå Žåãpipã«ãã£ãŠè¡ãããä»®å®ã¯ãããŸãããïŒã©ã€ãã©ãªãæ瀺çã§ããããïŒãã©ã€ãã©ãªã¯ãŸã çªç¶å£ããã
ãã®å Žåãsetuptoolsã«cwd
ãå«ãã以å€ã«ããããå£ããŠããã ããªã®ã§ãå®éã«ã¯ä»£æ¿æ段ãèŠã€ãããŸããã pep517ãšpip19ã®éã«ã«ãããããªãªãŒã¹ã«æ»ã£ãŠä¿®æ£ããããã«äººã
ã«æ瀺ããææ¡ã§ãªãéãããŠãŒã¶ãŒããããã®ããŒãžã§ã³ãå³å¯ã«åºå®ããŠãããšãçªç¶ã€ã³ã¹ããŒã«ã§ããªããªãå¯èœæ§ããããŸãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«é¢ãããããã®æ±ºå®ã®ãã®è°è«ãšçŸåšã®ææ¡ã«åºã¥ããŠããããã®ã©ã€ãã©ãªã®äžéšã¯ãpep517ãã«ããæ瀺çã«ç¡å¹ã«ãããŠããªãéããããã©ã«ãã䜿çšããŠæ°ããããŒãžã§ã³ã®pip + setuptoolsã§ã€ã³ã¹ããŒã«ã§ããŸããã
ããã¯ãPythonããæäŸãããããŒã«ã䜿çšããŠããã±ãŒãžãã€ã³ã¹ããŒã«ããããšããŠããã ãã®å Žåã¯ããªã圱é¿ããããŸãããå®éã«ã¯ã©ã³ãã ã«ã€ã³ã¹ããŒã«ããããšã¯ã§ããŸããã ããã¯ãæè¡çãªåŽé¢ããå°ãã®éçŠç¹ãå€ããããŒã«ããšã³ã·ã¹ãã ãã©ã€ãã©ãªããŸãã¯èšèªèªäœã«äžæºãæããå¯èœæ§ã®ãããšã³ããŠãŒã¶ãŒãžã®åœ±é¿ã«çŠç¹ãåœãŠãããã§ããç¹å®ã®ç¶æ³ïŒã圌ããä»ããŸãã€ã³ã¹ããŒã«ã§ãããã®ã¯ã€ã³ã¹ããŒã«ã§ããŸããã å®è£ ãããŠãããœãªã¥ãŒã·ã§ã³ã§ã¯ããã®ã®ã£ãããåããã¹ãã ãšæ¬åœã«æããŸãã
çŸåšãpipenvã§å€±æããã€ã³ã¹ããŒã«ãåŠçããããã«å€±æã¹ã¿ãã¯ã䜿çšããŠããããããã®å€æŽã®çµæãšããŠå€±æãåŠçããããã«å©çšå¯èœãªå Žåã¯--no-use-pep517
è¿œå ããŠããŸãã åé¡ã®åå ãããã«ã¯ããããªãã®ã§ããããå¹³åçãªãŠãŒã¶ãŒã«ãšã£ãŠçŽæçã§ãããã©ããã¯ããããŸããã ããã¯åé¿çãããããšãææããããã ãã«èšã£ãŠããŸããããã®ã®ã£ãããåããŠããŠãŒã¶ãŒããã®ã®ã£ãããå°ãç解ã§ããããã«ããããšãéèŠã ãšæããŠããŸãã
ïŒç·šéïŒpganssleãcjerdonekãpfmooreãpradyunsgãncoghlanãããã³ããã«å€ãã®æéãšåŽåãè²»ãããŠãããä»ã®ãã¹ãŠã®äººã«ãæè¬ããŸãïŒ
PEP 517ãéçºãããšãã«äºæ³ããããŠãŒã¹ã±ãŒã¹ã¯ãããã¯ãšã³ããPyPIïŒãŸãã¯ã«ã¹ã¿ã ã€ã³ããã¯ã¹ïŒã®ãã€ãŒã«ãšããŠåºè·ããããã«ãç°å¢ã«ããŠã³ããŒãããã³ã€ã³ã¹ããŒã«ãããããšã§ããã ããã¯ãšã³ãã®æ§ç¯æ¹æ³ã¯æããã«ç¯å²å€ã§ãããç§ã®å人çãªæšæž¬ã§ã¯ãããã¯ãšã³ãã¯PEP 517ã¡ã«ããºã ã䜿çšãããäœã¬ãã«ã®ã³ãã³ãïŒsetup.pybdist_wheelãflitbuildãªã©ïŒã䜿çšããŸãã PEP 517ããã¯ãšã³ããååž°çã«äœ¿çšããŠããèªäœãæ§ç¯ããããšã¯ãè€éãããã¹ãããã®ããã«èŠããŸããã ããã¯ãpipã§ã®PEP 518å®è£ ã®äžéšãšèŠãªãããŠããŸããïŒããã¯ãšã³ããsdistãšããŠåºè·ãããããèªäœã䜿çšããŠãã«ãããå Žåããã©ãŒã¯ç匟ãæªçšãããå¯èœæ§ããããŸãããã€ãŒã«ãšããŠé åžãããŠããªãããã¯ãšã³ãããµããŒãããåã«ããããé²ãå¿ èŠããããŸããã ïŒãã ããPyPIããããã¯ãšã³ããããŠã³ããŒãããå Žåã®ã¿ã
ããã«æ»ããšãæ°ããsetuptools.build_meta_legacy
ããã©ã«ãã¯ã setuptools
èªäœã®åé¡ã§ããPEP517ããã¯ãšã³ããé€ããã¹ãŠã«PEP517ã䜿çšããå Žåã®åé¡ã解決ããŸãã ããã解決ããªããšã@ benoit-pierreãpypa / setuptoolsïŒ1644ã§ææããŠããããã«ã setuptools
äŸåãããããžã§ã¯ãã«pip install --no-binary :all:
ã䜿çšããããšã¯ã§ããŸããã ïŒãŸãã¯ãããããä»»æPEP 517ã®ããã¯ãšã³ãã»ãããã€ãïŒã
ãã®ã¹ã¬ããã§ããã«ã€ããŠè©±ãåãã¹ãã§ããããããšãããã«ã€ããŠè©±ãåãããã«æ°ããã¹ã¬ãããäœæããã¹ãã§ããïŒ
ãã®ã¹ã¬ããã§ããã«ã€ããŠè©±ãåãã¹ãã§ããããããšãããã«ã€ããŠè©±ãåãããã«æ°ããã¹ã¬ãããäœæããã¹ãã§ããïŒ
ç§ã¯ãããåå²ããŸãã ç§ã®åœé¢ã®æèŠã¯ãåé¡ã¯ããã§--no-binary :all:
ãé倧ãªæå³ããªãçµæãããããããšã§ããïŒå®éã«ã¯ãsdistsã§ã¯ãªããã€ãŒã«ã®ã¿ãé
åžãããããžã§ã¯ãã®ååšäžã§ãã®ãã©ã°ã䜿çšããããšã®åœ±é¿ãšåæ§ã§ãïŒãç§ã¯æ¬²ããã§ãïŒããšãã°ïŒ --no-binary :all:
ã䜿çšããããšã®æšå¥šæ§ãžã®éžè±ãé¿ããããã«ããã®ã¹ã¬ããããããã«æ³šæãããããŸãã
--no-binary :all:
ãã«ãããã¯ãšã³ãã®åé¡ãä¿®æ£ããããšã¯ãããã»ã©éèŠã§ã¯ãªããšæããŸãã ãŠãŒã¶ãŒããã§ã«--no-binary :all:
æå®ããŠããå Žåã¯ãæ¯èŒçç°¡åã«--no-use-pep517
è¿œå ã§ããŸãã
æ°ããPRïŒ6229ïŒ
pyproject.toml
build-system
ã»ã¯ã·ã§ã³ãäœæãã@pganssleã®ææ¡ãããæ«å®çãªåé¿çãå®è£
ããPEP 517ã«èªåçã«ãªããã€ã³ããããã®åæèŠä»¶ïŒãä»»æã®pyproject.toml
ãã¡ã€ã«ããªããã延æåŸã®ãªãªãŒã¹ã«ïŒsetup.py
ããã®é£æ¥ããã±ãŒãžã®ã€ã³ããŒããã«ããŒãã3ã€ã®å°çšãã¹ãã±ãŒã¹ãè¿œå ããŸããšã³ããŠãŒã¶ãŒãåã³æ©èœããããã«ããããã®æå°éã®ä¿®æ£ã§ãããïŒ6210ã®ãããªæãããããã¯ãïŒ6212ã®ãããªæ°ããsetuptoolsãªãªãŒã¹ãå¿ èŠãšããªããããä»ã®2ã€ã®PRãéããŠ1ã€ã«ããŸãã
ã§ã¯ãããã¯setuptools.build_meta_legacy
ã©ãã«æ®ãã®ã§ããããïŒ pyproject.toml
ã§æ瀺çã«æå®ããããã«ããé£æ¥ããã±ãŒãžã®ã€ã³ããŒããæ©èœãå¿
èŠãšãããããžã§ã¯ããèŠæ±ãããšããææ¡ã¯ãããŸããïŒ ãããããªãããã®ä»æ§ãªãã§é£æ¥ããããã±ãŒãžãã€ã³ããŒãããããšã¯éæšå¥šã§ãããpip 19.Xã§åé€ããããšããäºå®ãšãšãã«ïŒXãäœã§ãããã«ã€ããŠåæããå¿
èŠããããŸãïŒãã©ããã«ææžåããå¿
èŠãããããšã匷ããå§ãããŸãããããè¡ãããšã¯ã§ããŸããããã°ã©ã ã«ããéæšå¥šïŒç§ã¯æããŸããïŒã§ããããããæ確ã«ææžåããçç±ã§ãããããååãªéç¥ãªãã«æ©èœãåé€ãããšããŠïŒåã³ïŒéé£ãããããšã¯ãããŸããã
ç·šéïŒããããããã§ãªããã°ãæ°ããPRãšèŠçŽã«æè¬ããŸãã
ç·šé2ïŒ setuptools.build_meta_legacy
ããããŒã¶ã«ãéããããã§ãã ç§ãã¡ã®é·æèšç»ãäœã§ããããä»èšãæ©äŒã倱ãã®ã§ãç§ã¯ããã奜ããã©ããã¯ããããŸããããã®ãããåè¿°ã®ããã«ãéæšå¥šæéã延é·ããŸã...
ããŒ@pfmooreãææã®åäœã«ãªã£ãŠèäžãïŒããããã«æŽæ°ããããšã«ãããïŒ6163ã®åé¿çãåé€ãããšé¢é£ããæ°ããåé¡ã§ã«ããŒããªããã°ãªããªãããšãæå³setuptools
æäŸããsetuptools.build_meta_legacy
ïŒã
ç·šéïŒä»ã®ãšãããïŒ6212ãåéããŸããããçŸåšå€±æããŠããã€ã³ã¹ããŒã«ã³ãã³ããä¿®æ£ããåã«ã build_meta_legacy
è°è«å
šäœã解決ãããã®ãåŸ
ã€å¿
èŠããªãããšãæ確ã«ããããã«ãã¿ã€ãã«ãå€æŽããŸããã
ç§ã®ææ¡ã¯ãå®éã«ã¯ãPEP 517ã®ãªããã€ã³ã¯build-system
ã®ååšã§ã¯ãªãã build-system.build-backend
æå®ããŠãããçŸåšãã19.1ãªãªãŒã¹ãŸã§ã®éã«setuptools
ãè¿œå ããããšãããã®build_meta_legacy
ãšpip
ã¯ããããããã©ã«ãã®ããã¯ãšã³ããšããŠäœ¿çšããŸãã
19.1ã§ãããããpip
ãsetuptools.build_meta_legacy
èŠã€ããããªãå Žåã¯ãå€ãã³ãŒããã¹ã«ãã©ãŒã«ããã¯ããå¿
èŠãããããšã«åæããŸãã ããã«ãããæ倧人æ°ãéžæããªãããæå°éã®é倧ãªå€æŽãå¯èœã«ãªããŸãã
ç§ã®ææ¡ã¯ãå®éã«ã¯ãPEP517ã®ãªããã€ã³ã§build-system.build-backendãæå®ããããšã§ããã
...ããã¯ãã©ãŒã«ããã¯ã®å Žåã«use_pep517 = False
ãèšå®ããã ãã§åŠçã§ããŸãïŒçŸåšè¡ã£ãŠããhas_pyproject
èšå®ããã®ã§ã¯ãããŸããïŒã
19.1ã§ã¯ãããããpipãsetuptools.build_meta_legacyãèŠã€ããããªãå Žåã¯ãå€ãã³ãŒããã¹ã«ãã©ãŒã«ããã¯ããå¿ èŠããããŸãã
ããã¯ãã䟡å€ããªããšæããŸãã ã¬ã¬ã·ãŒããã¯ãšã³ãã確å®ã«å ¥æã§ããããã«ãååã«æ°ããsetuptoolsããŒãžã§ã³ãæå®ããŸãããŸããsetuptoolsãå°æ¥ã®ããŒãžã§ã³ã§ãã®ããã¯ãšã³ããåé€ããå¯èœæ§ã«å¯Ÿå¿ããå¿ èŠã¯ãããŸããïŒãŸãã¯ãåé€ããå Žåã¯ãçµæãšããŠçããåé¡ã«ã€ããŠåã«ããããéé£ããŸã;-)ïŒ
æ³šïŒ use_pep517 = False
ããã©ã«ãã¯ãïŒ6229ãéå§ãããã®ã§ãããPEP518ãã¹ãã§å€±æãåŒãèµ·ãããŸããã
build-system.requires
ãèšå®ãããŠããŸããã®å Žåã¯ããã«ãåé¢ã䜿çšããå¿
èŠããããŸããããã«ããã芪ç°å¢ã«åœ±é¿ãäžããããšãªããèŠæ±ãããäŸåé¢ä¿ãã€ã³ã¹ããŒã«ã§ããŸãã çŸåšã®ã³ãŒãæ§é ãèãããšããããè¡ãæãç°¡åãªæ¹æ³ã¯ããã®å Žåã¯use_pep517 = True
ãèšå®ããããšã§ãããã®ããããããå®è¡ããŠããã¹ãã±ãŒã¹ãå床åæ ŒãããŸããã[build-system]
ããŒãã«ããªãå Žåã¯ã pyproject.toml
ã[tools]
ããŒãã«ã«èšå®ãæ ŒçŽããããã«äœ¿çšãããŠããããšã瀺ãuse_pep517 = False
ã䜿çšããå¿
èŠããããŸããæåã«å ±åãããåé¡ã«ã€ããŠã¯ããã®ãã¹ãã±ãŒã¹ãäºæ³ããã倱æãšããŠããŒã¯ããŸããã[build-system]
ããŒãã«ãã®ã±ãŒã¹ãæ®ããŸããããã¯ãã©ã¡ãã®æ¹åã§ãåççã«è§£æ±ºã§ãããšæããŸãã ãã ããå®éã«ã¯ãã®ç¹å®ã®ã±ãŒã¹ãé »ç¹ã«çºçãããšã¯æããªãããïŒ requires
ãŸãã¯build-backend
ãèšå®ããã«build-system
ããŒãã«ãè¿œå ããã®ã«èŠåŽããã®ã¯ãªãbuild-backend
ïŒïŒã2çªç®ã®äºæ³ãããé害ããŒã«ãŒãè¿œå ããã®ã§ã¯ãªãã以åã«å®çŸ©ãããPEP518ãã¹ãã±ãŒã¹ã«åæ Œããããšãæå³ããæ¹æ³ã§è§£æ±ºããããšãéžæããŸããã3ãå察æ¹åã«è§£æ±ºããã«ã¯ã次ã®è¡ãå€æŽããå¿ èŠããããŸãã
use_pep517 = build_system is not None
代ããã«ïŒ
use_pep517 = build_system is not None and build_system.get('requires', None)
ããããã°ã空ã§ãªãèŠä»¶ã®ã¿ãPEP 517ãã«ãåé¢ã«ãªããã€ã³ããŸãïŒç©ºã®build-system.requires
ãã£ãŒã«ãã®åäœãç°ãªãããã4çªç®ã®ãã¹ãã±ãŒã¹ãè¿œå ããããšãæå³ããŸãïŒã
ããã§ã®æåŸ
ãããŠããªãè²¢ç®ã«ã€ããŠã¯ç³ãèš³ãããŸããããããã¯ãã¹ãŠsys.path
cwdããªãããã«ããããã®ããªãæã®èŸŒãã æ¹æ³ã®ããã«æããããæçµçã«ã¯ä»¥åã¯æ©èœããŠãããã®ãå£ãããŸãŸã«ãªããéåžžã«æ··ä¹±ãæãããšã«æ°ã¥ããã«ã¯ããããŸããUXã®èŠ³ç¹ããã
ããã«ãããéèŠãªæ°ã®ãŠãŒã¶ãŒãšããã±ãŒãžã圱é¿ãåããŸãã ãããã®å°ãªããšãäžéšã«ã¯[build-system]
ã»ã¯ã·ã§ã³ãå®çŸ©ãããŠããã_ãŸã_å€ãåäœã«äŸåããŠããããããããã®ããŒãžã§ã³ãåºå®ããŠãã人ã«ãšã£ãŠã¯å£ãããŸãŸã«ãªããŸãã
@techalchemyããã pip
ã®å
ã
ã®ä»®å®ã¯ã setuptools.build_meta
ãsys.path
芳ç¹ããã setup.py
çŽæ¥åŒã³åºããšåãããã«æ©èœãããšãããã®sys.path
æ£ãããªãããšãå€æããã https://github.com/pypa/setuptools/pull/1652ã§å®çŸ©ãããŠããsetuptools.build_meta_legacy
ããã¯ãšã³ããå«ãsetuptools
ãªãªãŒã¹ãå©çšå¯èœã«ãªããšãïŒ6212ãå®äºããããšãã§ããããã¯é·ããªããŸãçšèªã®è§£æ±ºã ãã ãããã®ãããªãªãªãŒã¹ã®çŸåšã®ETAã¯ãªããããæ瀺çã«ãPEP 517ãã€ãã£ããã§ã¯ãªãããã±ãŒãžã®ãœãŒã¹ãã£ã¬ã¯ããªãsys.path
ã«æ»ãã«ã¯ã pip
ã®ã¿ã®è§£æ±ºçãåŒãç¶ã調æ»ããå¿
èŠããããŸãã "ã
ïŒ6229ã§ããããã©ã«ãã§PEP 517ãã®æ¡çšãåã«å»¶æãããšãã@pganssleã®ææ¡ãå®è£
ãpip
19ã®å¥ã®å€æŽã«ããã解決ãããããå€ãã®åé¡ãçºçããããã§ãã build-system.requires
ã¯build-system.build-backend
ã®åŠçã«é¢é£ä»ããããŠããããã --no-use-pep517
ã¯PEP 518ãç¡å¹ã«ããŸãïŒããã«ãããã¹ãã¹ã€ãŒãã®å€±æãçºçãããã«ãã®å Žåã¯å®éã®ã€ã³ã¹ããŒã«ã®å€±æãçºçããå¯èœæ§ããããŸãäŸåé¢ä¿ã¯ããªã€ã³ã¹ããŒã«ãããŠããŸããïŒã
ïŒ6210ã§ã¯ã代ããã«pep517
ã«ããŒã«ã«ã§ããããé©çšããŠããµãããã»ã¹ãžã®sys.path[0]
æ¿å
¥ããµããŒããã setuptools.build_meta_legacy
ãå°æ¥setutpools
å®è¡ãããšäºæ³ãããã®ãšåãããšãå¹æçã«å®è¡ããŸãã build-system.requires
ã¯åŒãç¶ãåŠçããã setup.py
ãå®è¡ããããšããœãŒã¹ãã£ã¬ã¯ããªã¯sys.path[0]
ã«ãªããŸãã ãŸãã httpsïŒ //discuss.python.org/t/pep-517-backend-bootstrapping/789/29ïŒu = ncoghlanã§ææ¡ãããã®ãšéåžžã«ãã䌌ãŠããã https://github.com/ã§ãã©ããããŸããã pypa / pep517 / pull / 42 / --no-binary :all:
ãšäºææ§ã®ããæ¹æ³ã§ã»ã«ãããŒãã¹ãã©ããããã¯ãšã³ããåŠçããŸã
AWOLRMã«ãªã£ãŠãã¿ãŸããã æãããããªãã£ãããšãèµ·ãã£ãã
ç§ã¯æããã«ããã«å¯ŸããsetuptoolsåŽã®ä¿®æ£ã奜ã¿ãŸãããïŒ6210ã¯ç§ã«ãšã£ãŠãã¯ãŒã«ã§ã-çæçãªä¿®æ£ãšããŠã
@techalchemyãš@pradyunsgã«åæããŸã-setuptoolsåŽã®ä¿®æ£ãããã§ã®æ£ããã¢ãããŒãã ãšæããŸãã pipå
ã§é«éãªä¿®æ£ãèŠã€ããããšããäœæ¥ã«æè¬ããŸããã _build_meta_legacy
ã䜿çšããŠsetuptoolsã®æ°ãããªãªãŒã¹ãä¿é²ããããã«ãã®ãããªæéãè²»ãããã»ããããã®ã§ã¯ãªãã§ããããã setuptoolsã®äžã«ã¯ã€ãã¯ãã£ãã¯ã¹ããªãªãŒã¹ãããšã®åé¡ã¯ïŒsetuptoolsã®ã¯ããµã€ã¯ã«ãéããããã®ããæ¹æ³ã§ããªãªãŒã¹ïŒããããŸããªãç§ã¯ãã¹ãŠæ確ã§ã¯ãªããã ã®ã§ãç§ã¯ãsetuptoolsã®äžã§äœãèµ·ãã£ãŠãããèŠãŠããŸããã
çæéã®pip-sideä¿®æ£ã¯åé¡ãããŸããããsetuptoolsã®ä¿®æ£ããã€æåŸ ã§ããããæ確ã«ããããšæããŸãã
ããã«ã¡ã¯ãã¿ããªïŒ
ç§ã¯åãåé¡ãæ±ããŠããŸãïŒ
**Collecting pyinstaller==3.4
Using cached https://files.pythonhosted.org/packages/
a0cc/PyInstaller-3.4.tar.gz
Installing build dependencies ... done
Getting requirements to build wheel ... error
Complete output from command "c:\program files (x86)\
gram files (x86)\microsoft visual studio\shared\python3
requires_for_build_wheel C:\Users\ASUS\AppData\Local\Te
Traceback (most recent call last):
File "c:\program files (x86)\microsoft visual studi
process.py", line 207, in <module>
main()
File "c:\program files (x86)\microsoft visual studi
process.py", line 197, in main
json_out['return_val'] = hook(**hook_input['kwarg
File "c:\program files (x86)\microsoft visual studi
process.py", line 54, in get_requires_for_build_wheel
return hook(config_settings)
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-en
, line 115, in get_requires_for_build_wheel
return _get_build_requires(config_settings, requi
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-en
, line 101, in _get_build_requires
_run_setup()
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-en
, line 85, in _run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 20, in <module>
from PyInstaller import __version__ as version, H
ModuleNotFoundError: No module named 'PyInstaller'**
åé¡ã解決ãããã©ãã誰ããç¥ã£ãŠããŸããïŒ ãŸãã¯ãããäžæçã«è§£æ±ºããæ¹æ³ã¯ïŒ
çããããããšãïŒ
@ jce94 ãä»ã®ãšããpip <19ã䜿çšããŸãã
@altendkyæ å ±ãããããšãïŒ
pipenv
ã䜿çšããŠãããšãã«ãæšå¥šãããåé¿çã§ãã®åé¡ã解決ã§ããŸããã§ããã åçµpip
ã«18.1
ã§Pipfile
ãªã©äœã®å¹æããªãããã pipenv
ææ°ãããããŒãžã§ã³ã匷å¶çã«ç¶æããŸãã æåã§pipã18.1ã«èšå®ã§ããŸãããpipenvä»®æ³ç°å¢ãåäœæãããšãPipenvã¯äœããã£ãŠãææ°ã®pipã«ã¢ããã°ã¬ãŒãããŸã...ãããç¶æããããã®æšå¥šäºé
ã¯ãããŸããïŒ
@altendkyæ®å¿µãªãããpipenvïŒããã³ç§ãæãè©©ïŒãŠãŒã¶ãŒã¯ãäºåå®çŸ©ãããããŒãžã§ã³ã®pipã䜿çšããããšã¯ã§ããŸããã ã©ã¡ããææ°ããŒãžã§ã³ã䜿çšããŠããŸãã ã ããä»ã®ãšããå€ãã®äººãå£ãããã€ãã©ã€ã³ã§ç«ã¡åŸçããŠãããšæããŸã
ããã«å¥åŠãªããšã«ãããã¯äžè²«ããŠèµ·ãã£ãŠããŸããã Appveyorãžã§ããåå®è¡ããŸãããæåã®ãžã§ãã¯æåãã2çªç®ã®ãžã§ãã¯å€±æããŸããããå®å šã«åäžã§ãã
誰ããã¿ã€ã ã©ã€ã³ã«ã€ããŠçåã«æã£ãŠããå Žåã¯ãä»é±ã®çµãããŸãã¯æ¥é±ã®åããŸã§ã«ä¿®æ£ãæºåãããã®åŸããã«pipã®ãã°ä¿®æ£ãªãªãŒã¹ãè¡ãããšãã§ãããšæããŸãã
setuptoolsã®æ°ããããŒãžã§ã³ã§ããããŒãžã§ã³40.8.0
ãã build_meta:__legacy__
ããã¯ãšã³ãã§å©çšã§ããããã«ãªããŸããã
ããããšãïŒ ãããŠãããã¯PyInstallerã«äœ¿çšããããã«æ瀺ããå¿
èŠããããã®ã§ããïŒ åœŒãã¯ãã
å€æŽã«éåžžã«äžæºã§ã...ç§ãæ瀺ã§ããããã¥ã¡ã³ããŸãã¯PEP
å€æŽããµããŒãããããã«ãããã䜿çšããŸããïŒ
2019幎2æ5æ¥ç«ææ¥ã10ïŒ24 Paul Ganssle < [email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
setuptoolsã®æ°ããããŒãžã§ã³ã§ããããŒãžã§ã³40.8.0ãã
build_metaïŒ__ legacy__ããã¯ãšã³ããâ
ããªããã³ã¡ã³ãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/pypa/pip/issues/6163#issuecomment-460747909 ããŸãã¯ãã¥ãŒã
ã¹ã¬ãã
https://github.com/notifications/unsubscribe-auth/ADtXZjnOfu56IYR6VEKK4yowMg3XdcFEks5vKcxBgaJpZM4aNvmP
ã
@AlmogCohenããããããã¯çŽæ¥äœ¿çšããå¿
èŠããããã®ã§ã¯ãªãã pip
ãããã©ã«ãã®ããã¯ãšã³ããšããŠbuild_meta:__legacy__
䜿çšãéå§ããããšã§ãã ããã¯ããšã³ããŠãŒã¶ãŒã®èŠ³ç¹ããã¯å®è¡å¯èœã§ã¯ãããŸããã
ä¿®æ£ãçµ±åããæ°ãããªãªãŒã¹ã®ETAã¯ãããŸããïŒ
ã»ãã®æ°æéã§ã :)
åºå®ãããåé¡ãåç §ããŠãã ããã
pip 19.0.2ããªãªãŒã¹ããããã®åé¡ãä¿®æ£ãããŸããã
--no-use-pep517
ã䜿çšããŠããå Žåã§ããææ°ããŒãžã§ã³ã®pipã§pyinstaller
ãã€ã³ã¹ããŒã«ã§ããŸãã
pip install pyinstaller --no-cache-dir --no-use-pep517
Collecting pyinstaller
Downloading https://files.pythonhosted.org/packages/03/32/0e0de593f129bf1d1e77eed562496d154ef4460fd5cecfd78612ef39a0cc/PyInstaller-3.4.tar.gz (3.5MB)
|ââââââââââââââââââââââââââââââââ| 3.5MB 273kB/s
Installing build dependencies ... done
ERROR: Complete output from command python setup.py egg_info:
ERROR: Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\Raffaele\AppData\Local\Temp\pip-install-5e9w2p2c\pyinstaller\setup.py", line 20, in <module>
from PyInstaller import __version__ as version, HOMEPATH, PLATFORM
ModuleNotFoundError: No module named 'PyInstaller'
----------------------------------------
ERROR: Command "python setup.py egg_info" failed with error code 1 in C:\Users\Raffaele\AppData\Local\Temp\pip-install-5e9w2p2c\pyinstaller\
ãã®ã¹ã¬ããã¯ãéããããåŸã«æè¿ã®ã¢ã¯ãã£ããã£ããªããããèªåçã«ããã¯ãããŠããŸãã é¢é£ãããã°ã«ã€ããŠã¯ãæ°ããåé¡ãéããŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
PyInstallerã¯
--no-use-pep517
æ£åžžã«ã€ã³ã¹ããŒã«ãããŸãã