ããã¯ãã¡ã€ã«ã®æŽæ°ã¯éåžžã«é
ããªãå¯èœæ§ããããŸãã æšæºã®pipenv lock
ã¯ãç§ã«ãšã£ãŠ1å以äžããããŸãã
$ time pipenv lock
Locking [dev-packages] dependenciesâŠ
Locking [packages] dependenciesâŠ
Updated Pipfile.lock (abef76)!
real 1m56.988s
user 0m21.805s
sys 0m2.417s
ã€ãŸããããã±ãŒãžãã€ã³ã¹ããŒã«ãã¢ã³ã€ã³ã¹ããŒã«ããŸãã¯ã¢ããã°ã¬ãŒãããå¿ èŠããããã³ã«ãpipenvãããã¯ãã¡ã€ã«ã®æŽæ°ãå®äºããã®ãåŸ ã€ããã«2åéã®äŒæ©ãåãå¿ èŠããããŸãã çç±ã¯ããããŸããã ã€ãŒã³ãšnpmã¯åæ§ã®ã¿ã¹ã¯ãå®è¡ããããã«èŠããŸãããããã«å€ãã®äŸåé¢ä¿ããããããžã§ã¯ãã®å Žåã§ããæ°ç§ããããããŸããã
ç§ãã¡ã¯ãã®ãããã¯ã远跡ããããšãèªèããŠãããå€ãã®åé¡ãæ±ããŠããŸãã ïŒ1785ïŒ1886ïŒ1891ããã³PRïŒ1896ãåç §ããŠãã ãã
npmãšyarnã«ã¯ãäŸåé¢ä¿ããã¬ãŒã³ããã¹ãã§æå®ãããŠãããããäŸåé¢ä¿ã°ã©ãã決å®ããããã«ãäºæ³ãããåããã±ãŒãžãå®å
šã«ããŠã³ããŒãããŠå®è¡ããå¿
èŠããªããšããå©ç¹ããããŸãã Pythonã®äŸåé¢ä¿ã§ã¯ã解決ããŠèšç®ããããã«ãåããã±ãŒãžã®ã»ããã¢ãããã¡ã€ã«ãå®å
šã«ããŠã³ããŒãããŠå®è¡ããå¿
èŠããããŸãã ããã¯ãã ã®çŸå®ã§ããããã¯å°ãé
ãã§ãã 2ååŸ
ã€ããšãã§ããªãå ŽåããŸãã¯ãã¬ãŒããªãã®äŸ¡å€ããªããšæããå Žåã¯ããã€ã§ã--skip-lock
æž¡ãããšãã§ããŸãã
ä»ã®åé¡ã远跡ããããã«éããŸãã
ããã§ãåãã§ããä»è©ŠããŠã¿ãŠãdjangoã®ã€ã³ã¹ããŒã«ã¯ãã§ã«10åã§å®äºããŠããŸãã
äžåºŠã«ã«ããã«ãã€ã³ã¹ããŒã«ããããšãããšé ãããã§ãããäžåºŠã«1ã€ãã€ã€ã³ã¹ããŒã«ãããšå°ãéãåäœããŸã
é ãåäœãåçŸããPipfileãæäŸã§ããã°ãããã¯åœ¹ã«ç«ã¡ãŸã-ããããšã
Pythonã®äŸåé¢ä¿ã§ã¯ã解決ããŠèšç®ããããã«ãåããã±ãŒãžã®ã»ããã¢ãããã¡ã€ã«ãå®å šã«ããŠã³ããŒãããŠå®è¡ããå¿ èŠããããŸã
ããã±ãŒãžã«ç¬èªã®Pipfile.lock
ãããå Žåã§ããããã¯åœãŠã¯ãŸããŸããããããšããpipenvã¯ãäŸåé¢ä¿ãå€æããããã«å¯èœãªå Žåã¯ããã䜿çšããŸããïŒ
pipenvã¯ãäŸåé¢ä¿ãå€æããããã«å¯èœãªå Žåã¯ããã䜿çšããŸããïŒ
ããããPipenvã¯ã¢ããªã±ãŒã·ã§ã³äŸåé¢ä¿è§£æ±ºããŒã«ã§ãã äŸåé¢ä¿ãå¥ã®ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠPythonããã±ãŒãžãšããŠäœ¿çšããããšããã®äŸåé¢ä¿ã¯ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãªããªããŸãã ãã®äŸåé¢ä¿ã¯ãsetup.pyïŒãŸãã¯setup.cfgãŸãã¯PyPIãžã®ã¢ããããŒãã«äœ¿çšãããã®ïŒã«ãã£ãŠæ±ºå®ãããŸãã ããã¯ãã¡ã€ã«ããäŸåé¢ä¿ãããŒãããããšã¯ãäŸåé¢ä¿å°çãžã®ç¢ºå®ãªã«ãŒãã§ãã
ããã¯ãŸã è¶ é ãã§ã
@iddanãªãã€ã³ããŒãããããšãããã£ããã³
ç³ãèš³ãããŸããããOSSã®ã¡ã³ãããšããŠã幎霢ãåå ã§åé¡ãåŽäžãããããšãããããšãç§ã¯ç¥ã£ãŠããŸãã åé¡ãè°è«ãåãããšããŠããããã¯ãŸã é¢é£ããŠãããšè¿°ã¹ããã£ãã ãã§ã
äžèšã®--skip-lock
@techalchemyããŒãã¯çŽ æŽãããã§ãã ããã¯ãããã¢ã¯ã»ã¹ããããããŸãã¯å
¬è¡šããããªãã·ã§ã³ã§ããå¿
èŠããããŸãã ã©ããã§ããã©ã«ããšããŠèšå®ã§ããŸããïŒ
@techalchemyæ°ããMacProã§20åãããå Žåã¯ã©ããªããŸããïŒ
äžèšã®
--skip-lock
@techalchemyããŒãã¯çŽ æŽãããã§ãã ããã¯ãããã¢ã¯ã»ã¹ããããããŸãã¯å ¬è¡šããããªãã·ã§ã³ã§ããå¿ èŠããããŸãã ã©ããã§ããã©ã«ããšããŠèšå®ã§ããŸããïŒ
ç§ãåéããéããpipenvã®å§åçãªå©ç¹ã¯ãäŸåé¢ä¿ãããŸãé£æºããããšãä¿èšŒããããšã§ãâããªãã ãã§ãªããåŸã§ããªãã®ã³ãŒããæ±ã人ã«ãšã£ãŠãã ãã®ä¿èšŒã®ç£ç©ã§ããããã¯ãã¡ã€ã«ã¯ã_éçºè ãå«ããŠ_誰ããæåŸ ãŸãã¯æãã§ããããã絶察ã«æéãããããŸãâïŒ2200ãåç §ããŠãã ããã
ãã ããpipenvãPythonã³ãã¥ããã£å šäœã®åæã®ããéçºè ããå°æ¥ã®è²¢ç®è ã«é ãæ©ãŸããã¯ãŒã¯ãããŒã«åããŠå°ãæ©äŒãç解ã§ãããšæããŸããéçºç°å¢ã®ã»ããã¢ããæ¹æ³ãç解ããã段éã ãããŠãå°æ¥ã®ã¡ã³ããã«ãã£ãŠæããããæãå°ãªããªããŸããâ PRã®äœè ã«ãã£ãŠãã©ã€ããã€ãããã ãã ã£ããããããŸããããããããžã§ã¯ãã®æ·±ãå éšãçå£ã«ãã¡ããã¡ãã«ããã段éã§è«ŠããŠããŸããã
--skip-lock
ãPipfileã®æ°žç¶çãªãã©ã°ãŸãã¯pipenvæ§æã®èšå®ã«ãªããšãpipenvã®èªèã¯ãã£ãããšãããè¯ãããããã«åãã£ãŠã¹ã©ã€ãããã³ãã¥ããã£ãæçµçã«çéžããã«ã€ããŠããã1ã€ã®èžã¿ç³ãå°å¹³ç·ã«æ¶ããŠãããŸãã劥åã®å°ãªã粟ç¥çåŸç¶è
ã
env varããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã_ "ãŠãŒã¶ãŒåºæã®ããŒã«ã«æ§æãé害" _é åã«çŽæ¥ååšããä»ã®ã¡ãœãããšããŠã®ã¿äœ¿çšã§ããããã«ããŠãããšãpipenvãããã¯ãã¡ã€ã«çæã®é床äœäžã®ééãã§ãŒãºããããããããšãªãå æã§ããããã«ãªããŸããããã±ãŒãžç®¡çã«ããã_æé»æ§ãããæ瀺æ§_ãžã®çã«æçãªæåçã·ããã
Pythonã®ä¿¡ããããªãã»ã©åºå€§ãªæšæºã©ã€ãã©ãªã¯å·šå€§ãªè³ç£ã§ããããã®æŽå²ã¯äžè²«æ§ã課ãå€ãã®æ代ãçµãŠããŸããã ã»ãšãã©ã®æšæºããã±ãŒãžãããŸãé£æºããããšã¯ãå€ãã®äººã ãé·å¹Žã«ããã£ãŠæ€èšããããšãå«ã倧ããªåæ¥ã§ãã ãã€ã®æ¥ãããã®ãã¬ã€ã®çŽ æŽãããã¯ããŠã§ãäžã§ééããã»ãšãã©ã®Pythonãããžã§ã¯ãã«ãŸã§åã¶ã§ãããâ stdlibããé ãé¢ããŠãå¿ èŠãªPEPãã¯ããã«å°ãªããªããŸãïŒãããŠããã©ã¹ãã¬ãŒã·ã§ã³ã§ç©ºããBDFLãã¯ããã«å°ãªããªããŸãïŒã ãã®ãããªäžæ¹çãªãã¿ãŒäœéšã®åœ±é¿ã枬å®ããããšã¯å°é£ã§ãããçŸåšã®äžéšã®èšèªã¯ãããã«äŸ¿å©ã«ãªãããã«æŠå¿µã®æŽåæ§ã劥åããããšãæåŠããŠããŸã...ãããŠã圌ããè¡ãå Žæã§ãã
ãããã£ãŠã_yes_ãããã¯ãã¡ã€ã«ã®çæã¯é
ãã_yes _ã pip install --save
ã ããå¿
èŠãªå Žåã¯ã€ã©ã€ã©ããŸãã ããããããã¯ç§ãã¡ãäœå¹Žãã®éã¯ããŒãŒããã«è±¡ãæŒã蟌ãã§ããããã§ããå€éšã®äŸåé¢ä¿ããã®æåŸ
ãæå³ã®çµ¡ã¿åã£ãæ··ä¹±ã¯ãªãã£ããšä¿¡ããŠããŸãããªããªãã_ãç§ã®ãã·ã³ã«ããŸãã€ã³ã¹ããŒã«ãããã_ããã§ãã
ããã¯ãã¡ã€ã«ã®çæã¯ãç§ãã¡å šå¡ãåœããåãšæã£ãŠããããšãæ瀺çã«ããŠããããã_only_é ãã§ãã ãããããããçãã®ã§ãç§ãã¡ã¯ãããèµ·ãããªãããã«ç©äºã調æŽããŸãã èªåãä¿¡ããŠããããšãããŠããã®ã§ãè ã骚æããŸããã確ãã«ãè ãäºåºŠãšäœ¿çšããªãããšã§çã¿ãåé¿ã§ããŸãããŸãã¯ãæ²»çäžã«ã®ãã¹ã«å ¥ããããšãã§ããŸãã
ç§ã¯ä»æ¥ãpipenvãèªåã«ãšã£ãŠäŸ¿å©ã«ããªãããã«ããªãã«èšãæåŸã®äººã§ãïŒããã§ãªããã°ãç§ã¯ãã ããªãéçºè ã«ãªããŸãâ _ããããéªå¯©å¡ã¯ãŸã åºãŠããŸãã_ïŒããããç§ã¯ããªãã«ããã¯ãã¡ã€ã«çæã®æ¬²æ±äžæºãæé·ããŠããã®ãèŠãããšããå§ãããŸãPythonã³ãã¥ããã£ãããã£ã¹ããåé€ãããšãã«å®éã«äºæ³ããããããå®å šã«æ©èœããæ足ãåããã匷ããŠå¥åº·ãªäœã«æé·ããéã®çã¿ã Python3ã«å°éããŸãããstdlibã®äŸåé¢ä¿ç®¡çã«å°éããŸãããã
ç§ã®ãã·ã³ã§ã¯ãããã¯ãã¡ã€ã«ãäœæããã®ã«38åããããŸããã Windows10ãå®è¡ããŠPython3.7ã䜿çšãã
numpyãšpillowã ãããã§ã«ã€ã³ã¹ããŒã«ãããŠãããnumbaã®ã€ã³ã¹ããŒã«ã«1ç§æªæºãããã¯ã«25åããããŸããã pipenvã¯ããã¯æã«ãã¹ãŠã®libã匷å¶çã«ã³ã³ãã€ã«ããŸããããããšãããã¯ã©ã®ããã«æ©èœããŸããïŒ
åèãŸã§ã«ãæ°žç¶çãªã¹ãããããã¯ã¯ãã¯ãªãã¯èšå®ã§ããauto_envvar_prefix
ã®ã¹ã€ããã誰ããåãæ¿ããã®ãåŸ
ã£ãŠããã ãã§ãã ç§ã¯ã³ã¢æ©èœã«100ïŒ
éäžããŠããã®ã§ããããèŠãæ©äŒã¯ãŸã ãããŸããããããã»ã©é£ããã¯ãªããšæããŸã
TLDR; å
žåçãªpipenv install
åŒã³åºãïŒæéïŒ144.82å®æ°33.68ãŠãŒã¶ãŒ5.77ã·ã¹ãã ã --skip-lock
ïŒæéïŒ4.54å®æ°5.33ãŠãŒã¶ãŒ0.87ã·ã¹ãã ã
ãã³ã-datareaderã®ã€ã³ã¹ããŒã«ãæåã®è©Šè¡ã§å€±æãã lock
ãã³ã°ããå¯èœæ§ããããŸãã ããã¯ä»ã®èª°ããä»ã®ããã±ãŒãžã§èŠãŠããåé¡ã§ããïŒ
ããŒãžã§ã³2018.11.26ã䜿çš
$ pipenv --version
pipenv, version 2018.11.26
requirements.txt
sklearn
pandas
numpy
matplotlib
statsmodels
å
žåçãªpipenv install
åŒã³åºãã time
ïŒBSDïŒã䜿çšããæéå®è¡ã
çµæïŒ144.82å®éã®33.68ãŠãŒã¶ãŒ5.77 sys
$ time pipenv install -r requirements.txt
Requirements file provided! Importing into PipfileâŠ
Pipfile.lock (0fdb67) out of date, updating to (a65489)âŠ
Locking [dev-packages] dependenciesâŠ
Locking [packages] dependenciesâŠ
â Success!
Updated Pipfile.lock (0fdb67)!
Installing dependencies from Pipfile.lock (0fdb67)âŠ
ð
ââââââââââââââââââââââââââââââââ 15/15 â 00:00:04
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
144.82 real 33.68 user 5.77 sys
w \ --skip-lock
ãåŒã³åºã
çµæïŒ4.54å®æ°5.33ãŠãŒã¶ãŒ0.87 sys
$ time pipenv install -r requirements.txt --skip-lock
Requirements file provided! Importing into PipfileâŠ
Installing dependencies from PipfileâŠ
ð
ââââââââââââââââââââââââââââââââ 6/6 â 00:00:01
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
4.54 real 5.33 user 0.87 sys
https://github.com/pandas-dev/pandas/ãåé¡ã«ãªããšæã
pytest
ãåé¡ã«ãªãå¯èœæ§ããããŸããïŒ\
ããã¯ç§ã®ãã·ã³ã§ãçµäºããŸããïŒ
Installing pandasâŠ
Adding pandas to Pipfile's [packages]âŠ
Installation Succeeded
Pipfile.lock not found, creatingâŠ
Locking [dev-packages] dependenciesâŠ
Locking [packages] dependenciesâŠ
Traceback (most recent call last):
File "c:\python36\lib\site-packages\pipenv\vendor\pexpect\expect.py", line 109, in expect_loop
return self.timeout()
File "c:\python36\lib\site-packages\pipenv\vendor\pexpect\expect.py", line 82, in timeout
raise TIMEOUT(msg)
pexpect.exceptions.TIMEOUT: <pexpect.popen_spawn.PopenSpawn object at 0x00000292ADCCCDD8>
searcher: searcher_re:
0: re.compile('\n')
@ black-snowå¥ã®ã·ã§ã«ã§è©Šãããšããå§ãããŸãã ç©äºãæ·±ãæãäžããããšãªããpexpectïŒã€ã³ã¿ã©ã¯ãã£ããªCLIããã°ã©ã ãšããã°ã©ã ã§ã€ã³ã¿ãŒãã§ã€ã¹ããããã®ã©ã€ãã©ãªïŒã䜿çšããŠãpipenvãå®è¡ãããŠããã·ã§ã«ãæ€åºããŠããããã§ããããã¯åæ¢ããŠããå¯èœæ§ããããŸãã pexpectã¯ãã®ãããªããšã«ã¯ã¡ãã£ãšããéãã®ããã§ãããç§ã¯å šäœã®æèãç¥ããŸããã
@ theY4Kmanã¢ããã€ã¹ãããããšãã pipenvã¯ãåãubuntuãšbashããŒãžã§ã³ã®å¥ã®PCã§æ£åžžã«åäœããŠããŸã...
pipfileãããã¯ããã®ãåŸ ã£ãŠããéã«ãããèªãã§ãã ãã... :)解決çãããã°çŽ æŽãããã§ãããã
Pythonããã±ãŒãžã®depsã解æããŠãã£ãã·ã¥ãããã·ã³ãã¬ã³ããªãŒãªåœ¢åŒã§é åžããã«ã¯ããªãããã®APIãå¿ èŠãªããã§ãã ãã®ãããããã±ãŒãžå šäœãããŠã³ããŒãããŠè§£æããå¿ èŠããªããªããŸãã
ç§ã¯ãbundleãšruby gemããã®ãããªãã®ãç¶æãã䜿çšããŠãããšä¿¡ããŠããŸãã
Javaã«ã¯ãããã±ãŒãžã®äŸåé¢ä¿ãããã±ãŒãžã«é¢ãããã®ä»ã®æ å ±ãå«ãPOMãã¡ã€ã«ïŒXMLïŒããããŸãã ãããã¯ãã³ã³ãã€ã«ãããJARãšã¯å¥ã«ã¢ããããŒããããŸãã
ãã¹ãŠã®æ°ããããã±ãŒãžãããŒãžã£ãŒã«ã¯ãããã€ãã®åå¥ã®ã¡ã¿ãã¡ã€ã«ïŒnpm / yarnãcomposerãgradle / mavenãcargoãruby gems / bundlerãªã©ïŒããããŸãã
é¢é£ããåé¡ïŒ
https://github.com/pypa/warehouse/issues/474
ãã³ãã«å šäœãããŠã³ããŒãããªããŠããPyPiããäŸåé¢ä¿æ å ±ãååŸã§ããŸãïŒPEP426ã«åã£ãŠä»£ãã£ãPEP566ãåç §ïŒã
package_name = 'Django'
PYPI_API_URL = 'https://pypi.python.org/pypi/{package_name}/json'
package_details_url = PYPI_API_URL.format(package_name=package_name)
response = requests.get(package_details_url)
data = json.loads(response.content)
data['info'].get('requires_dist')
data['info'].get('requires')
data['info'].get('setup_requires')
data['info'].get('test_requires')
data['info'].get('install_requires')
@techalchemyäžèšã®ã³ã¡ã³ããèŠãŸãããïŒ
ããã¯ããªãäžè²«ããŠèµ·ãã£ãŠãããæ¬è³ªçã«pipenv
ã¯äœãããããã¯ãããŠããéã«çºãåããŸãïŒãªããã®åé¡ã¯è§£æ±ºãããã®ã§ããïŒ
--skip-lock
ãé²ãã¹ãéã§ããããšãç解ããŸããããã€ã³ã¹ããŒã«ãã«æ°ç§ãããããããã¯ãã«æ°žé ã«ãããçç±ã¯ãŸã£ããããããŸãããå°ãªããšãlockã³ãã³ãã§ããçšåºŠã®é²è¡ãèŠããããšäŸ¿å©ã§ãã / updateãã°ïŒçŸç¶ã§ã¯ãããçš®ã®while True
æ°žä¹
ã«è¡ãè©°ãŸã£ãŠãããã©ããããã¯ã£ããããŠããŸãã...
å°ãªããšããç§ãäœãééã£ãããšãããŠããã®ãããããšãåã«pipenvã®ãæ©èœããªã®ããç¥ãããã®ã§ãã
ç§ãã¡ã®ãããžã§ã¯ãã§ã¯ã pipenv lock
ã¯ãšãŠãé
ãã§ãã ããã¯ééããªãç§ãã¡ã®éåžžã®äœ¿çšã«åœ±é¿ãäžããŸããã æ°ããããã±ãŒãžãè¿œå ããããšã¯ãä»ç§ãã¡ã«ãšã£ãŠæ¬åœã«èŠçã«ãªããŸãã ãšã«ããããã®åäœããããã°ã§ããŸããïŒ
PyTorchãã€ã³ã¹ããŒã«ããããšããŠããŸãããããã¯ããã®ã«20åãããã次ã®ãšã©ãŒãçºçããŸã
Installing initially failed dependenciesâŠ
[pipenv.exceptions.InstallError]: File "/usr/local/lib/python3.6/dist-packages/pipenv/core.py", line 1992, in do_install
[pipenv.exceptions.InstallError]: skip_lock=skip_lock,
[pipenv.exceptions.InstallError]: File "/usr/local/lib/python3.6/dist-packages/pipenv/core.py", line 1253, in do_init
[pipenv.exceptions.InstallError]: pypi_mirror=pypi_mirror,
[pipenv.exceptions.InstallError]: File "/usr/local/lib/python3.6/dist-packages/pipenv/core.py", line 859, in do_install_dependencies
[pipenv.exceptions.InstallError]: retry_list, procs, failed_deps_queue, requirements_dir, **install_kwargs
[pipenv.exceptions.InstallError]: File "/usr/local/lib/python3.6/dist-packages/pipenv/core.py", line 763, in batch_install
[pipenv.exceptions.InstallError]: _cleanup_procs(procs, not blocking, failed_deps_queue, retry=retry)
[pipenv.exceptions.InstallError]: File "/usr/local/lib/python3.6/dist-packages/pipenv/core.py", line 681, in _cleanup_procs
[pipenv.exceptions.InstallError]: raise exceptions.InstallError(c.dep.name, extra=err_lines)
[pipenv.exceptions.InstallError]: ['Collecting pytorch==1.0.2 (from -r /tmp/pipenv-pb00kf8t-requirements/pipenv-vae35p2d-requirement.txt (line 1))', ' Using cached https://files.pythonhosted.org/packages/ee/67/f403d4ae6e9cd74b546ee88cccdb29b8415a9c1b3d80aebeb20c9ea91d96/pytorch-1.0.2.tar.gz', 'Building wheels for collected packages: pytorch', ' Building wheel for pytorch (setup.py): started', " Building wheel for pytorch (setup.py): finished with status 'error'", ' Running setup.py clean for pytorch', 'Failed to build pytorch', 'Installing collected packages: pytorch', ' Running setup.py install for pytorch: started', " Running setup.py install for pytorch: finished with status 'error'"]
[pipenv.exceptions.InstallError]: ['ERROR: Complete output from command /home/alex/.local/share/virtualenvs/pytorch-umelu-tG/bin/python3 -u -c \'import setuptools, tokenize;__file__=\'"\'"\'/tmp/pip-install-hix3yz6v/pytorch/setup.py\'"\'"\';f=getattr(tokenize, \'"\'"\'open\'"\'"\', open)(__file__);code=f.read().replace(\'"\'"\'\\r\\n\'"\'"\', \'"\'"\'\\n\'"\'"\');f.close();exec(compile(code, __file__, \'"\'"\'exec\'"\'"\'))\' bdist_wheel -d /tmp/pip-wheel-f_h8w1pz --python-tag cp36:', ' ERROR: Traceback (most recent call last):', ' File "<string>", line 1, in <module>', ' File "/tmp/pip-install-hix3yz6v/pytorch/setup.py", line 15, in <module>', ' raise Exception(message)', ' Exception: You tried to install "pytorch". The package named for PyTorch is "torch"', ' ----------------------------------------', ' ERROR: Failed building wheel for pytorch', ' ERROR: Complete output from command /home/alex/.local/share/virtualenvs/pytorch-umelu-tG/bin/python3 -u -c \'import setuptools, tokenize;__file__=\'"\'"\'/tmp/pip-install-hix3yz6v/pytorch/setup.py\'"\'"\';f=getattr(tokenize, \'"\'"\'open\'"\'"\', open)(__file__);code=f.read().replace(\'"\'"\'\\r\\n\'"\'"\', \'"\'"\'\\n\'"\'"\');f.close();exec(compile(code, __file__, \'"\'"\'exec\'"\'"\'))\' install --record /tmp/pip-record-xr7o93_5/install-record.txt --single-version-externally-managed --compile --install-headers /home/alex/.local/share/virtualenvs/pytorch-umelu-tG/include/site/python3.6/pytorch:', ' ERROR: Traceback (most recent call last):', ' File "<string>", line 1, in <module>', ' File "/tmp/pip-install-hix3yz6v/pytorch/setup.py", line 11, in <module>', ' raise Exception(message)', ' Exception: You tried to install "pytorch". The package named for PyTorch is "torch"', ' ----------------------------------------', 'ERROR: Command "/home/alex/.local/share/virtualenvs/pytorch-umelu-tG/bin/python3 -u -c \'import setuptools, tokenize;__file__=\'"\'"\'/tmp/pip-install-hix3yz6v/pytorch/setup.py\'"\'"\';f=getattr(tokenize, \'"\'"\'open\'"\'"\', open)(__file__);code=f.read().replace(\'"\'"\'\\r\\n\'"\'"\', \'"\'"\'\\n\'"\'"\');f.close();exec(compile(code, __file__, \'"\'"\'exec\'"\'"\'))\' install --record /tmp/pip-record-xr7o93_5/install-record.txt --single-version-externally-managed --compile --install-headers /home/alex/.local/share/virtualenvs/pytorch-umelu-tG/include/site/python3.6/pytorch" failed with error code 1 in /tmp/pip-install-hix3yz6v/pytorch/']
ERROR: ERROR: Package installation failed...
ãšã©ãŒã¯æªèªã§ãäœãæªãã£ãã®ãããããŸããã ç°å¢ãžã®pipã䜿çšããã€ã³ã¹ããŒã«ã¯æ£åžžã«æ©èœããŸãïŒ ããã¯æ¬åœã«ã·ã§ãŒã¹ããããŒã§ãã Requirements.txtã«æ»ããŸã...
ããã¯ç§ãä»äœ¿çšããŠããåé¿çã§ãïŒ
export PIPENV_SKIP_LOCK=true
ãã®åŸã pipenv install foo
ã¯ããã¯ããããæéããããšãã«pipenv lock
å®è¡ããŠæåã§ããã¯ã§ããŸãã
@awhillasæåŸã®è¡ã«å¿ èŠãªãã®ããã¹ãŠèšèŒãããŠããããšã確èªããŠãã ããã
ãpytorchããã€ã³ã¹ããŒã«ããããšããŸããã PyTorchã«ã¡ãªãã§åä»ããããããã±ãŒãžã¯ãtorchãã§ã
äŸåé¢ä¿ãããã¯ããããšã¯éèŠãªã®ã§ããã¹ãããããã¯ããæ°žç¶çãªè§£æ±ºçã§ãããšã¯æããŸããã åæã«ããããã¯ã®äŸåé¢ä¿ãïŒå éšã§çºçããå¯èœæ§ã®ãããã®ã¯äœã§ãïŒãçŸåšãæ©èœçã«å®äºããã®ã«æ°åãŸãã¯æ°æéããããããæ倧éã«æé©åãããŠããããšãè³Œå ¥ããŸããã å®éãç§ã®pipenvããã¯ã¯ã倱æããåã«ç¬ãã5ã€ã®äŸåé¢ä¿ãæã€Pipfileã§æ°åéå®è¡ãããŸããïŒã¹ã¿ãã¯ã¯äžéšã«æ¥ç¶ãããŠããŸãïŒããã®éã䜿çšå¯èœãªCPUã®10ã15ïŒ ãšããããªã¡ã¢ãªãã䜿çšããŸããã§ããã
å°ãªããšããããã«ããã¯ã®ãããã¡ã€ã«ãäœæããŠç¹å®ããããã«ãã°ã«ãŒãã§åªåããããšã¯ã§ããŸããïŒ ç§ã¯ããã®ããã»ã¹ã劥åœãªå®è¡æéã«å ¥ããã®ãåŸ ã£ãŠããã ãã§ãããã«ããã€ãã®ã°ãããäœãã¶ãäžãã£ãŠããæç©ããããšæããŠããŸãã
pipenv version 2018.11.26
Pipfileã®å ŽåïŒ
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
[dev-packages]
keras = "*"
tensorflow = "~=1.13"
setuptools = "*"
wheel = "*"
twine = "*"
[requires]
python_version = ">=3.6"
Pipfile.lock (63b275) out of date, updating to (5e165c)âŠ
Locking [dev-packages] dependenciesâŠ
Traceback (most recent call last):
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/pexpect/expect.py", line 109, in expect_loop
return self.timeout()
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/pexpect/expect.py", line 82, in timeout
raise TIMEOUT(msg)
pexpect.exceptions.TIMEOUT: <pexpect.popen_spawn.PopenSpawn object at 0x105a17210>
searcher: searcher_re:
0: re.compile('\n')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/bin/pipenv", line 11, in <module>
load_entry_point('pipenv==2018.11.26', 'console_scripts', 'pipenv')()
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/cli/command.py", line 254, in install
editable_packages=state.installstate.editables,
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/core.py", line 1992, in do_install
skip_lock=skip_lock,
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/core.py", line 1221, in do_init
pypi_mirror=pypi_mirror,
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/core.py", line 1068, in do_lock
lockfile=lockfile
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/utils.py", line 649, in venv_resolve_deps
c = resolve(cmd, sp)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/utils.py", line 517, in resolve
result = c.expect(u"\n", timeout=environments.PIPENV_INSTALL_TIMEOUT)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/delegator.py", line 215, in expect
self.subprocess.expect(pattern=pattern, timeout=timeout)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/pexpect/spawnbase.py", line 341, in expect
timeout, searchwindowsize, async_)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/pexpect/spawnbase.py", line 369, in expect_list
return exp.expect_loop(timeout)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/pexpect/expect.py", line 119, in expect_loop
return self.timeout(e)
File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/vendor/pexpect/expect.py", line 82, in timeout
raise TIMEOUT(msg)
pexpect.exceptions.TIMEOUT: <pexpect.popen_spawn.PopenSpawn object at 0x105a17210>
searcher: searcher_re:
0: re.compile('\n')
åã®ã³ã¡ã³ãã®è£è¶³ãšããŠã pip lock
åå¥ã«å®è¡ãããšãæåã«pip install --skip-lock
å®è¡ããŠããã劥åœãªæéïŒã15ç§ïŒãããããŸããã ãããã£ãŠãã€ã³ã¹ããŒã«åŸã®ããã¯ã®åŒã³åºããå€ããªã£ãŠããããããã§ãªããã°é害ãçºçããŠããå¯èœæ§ããããŸãã :)
åèãŸã§ã«ããã³ãœã«ãããŒãé ã/ã¿ã€ãã³ã°ã¢ãŠãããã¯ã®åå ã§ããããšãããããŸããããããpipenvã®ãããã¡ã€ã«ã«åœ¹ç«ã€å Žåã§ãã ïŒããã§ããããpipenvã®åé¡ãšèããŠãã ãã...ïŒ
Tensorflowã¯ãpipenvãåºæ¬çã«åœ¹ã«ç«ããªãããŒã«ã«ããå¯èœæ§ã®ããå€ãã®ããã±ãŒãžã®1ã€ã§ãã ãã ããã°ã«ãŒããããã¡ã€ãªã³ã°ã®ææ¡ã¯æ°ã«å ¥ã£ãŠããŸãã ããã¯ãã®åé¡ã«åãçµã¿å§ããããã®çŽ æŽãããã¢ã€ãã¢ã ãšæããŸãã ç¹°ãè¿ãã«ãªããŸãããPEP 566ã¯ããœãŒã¹å šäœãããŒãããã«ïŒpypiãä»ããŠïŒäŸåé¢ä¿ãåæã§ããããã«ããŸãããããã¯åœ¹ç«ã€å ŽåããããŸãïŒ https ïŒ
@brandonrobertzç§ãèŠããšããã«ãããšãäŸåé¢ä¿ã®ãã¹ãŠã®ããã±ãŒãžãããŠã³ããŒãããããšã¯ãã»ãšãã©ã®æéãè²»ããããå Žæã§ãã ããã以åã«ç¢ºèªãããŠããŸãã
ããã確èªããæ¹æ³ïŒ
Pipfile
ãäœæããããã¯ãæå¹ã«ããŠscipy
ïŒããšãã°ïŒãã€ã³ã¹ããŒã«ããŠã¿ãŠãã ããPipfile.lock
åé€ããŸãpipenv lock
å®è¡ããŸã-ãã¹ãŠã®ããã±ãŒãžããã§ã«ããŠã³ããŒããããéåžžã¯~/.cache/pipenv
ã«ããPipenvãã£ãã·ã¥ã«ä¿æãããŠãããããããã¯ã«ãããæéã¯ãããããã§ãïŒç§ã®ãã·ã³ã§ã¯6ç§ïŒãããããã¹ãããããã«äœ¿çšããDockerfileã¯æ¬¡ã®ãšããã§ãã
FROM python:3.6
ENV WORKDIR=/work/
WORKDIR /work/
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install pipenv
RUN PIPENV_SKIP_LOCK=true pipenv install scipy
RUN date
RUN pipenv lock
RUN date
RUN rm Pipfile.lock
RUN pipenv lock
RUN date
@shtratosãããããã¯çã«ããªã£ãŠããŸãããããŠä»ã®äººã¯ãã®åé¡ã®ã¹ã¬ããã§ããã瀺åããŸããã äŸåé¢ä¿ã®ããŠã³ããŒããšè§£æã«ã¯ã³ã¹ããããããŸãã ãããã®æé ã®ããã€ãã¯ãpypiäŸåé¢ä¿APIãããã«ããããšã§åé€ã§ããããã§ãã
äžéšã®ã©ã€ãã©ãªã§ã¯ãå質ãäœãããã©ã¯ãã£ã¹ãæªãããïŒsetup.pyãŸãã¯requirements.txtã䜿çšããŠããªãããïŒãããã¯ããããæ©èœããŸããã ããããäž»èŠãªéåè ã®äžéšã¯éåžžã«äººæ°ã®ããã©ã€ãã©ãªïŒtensorflowãnumpyïŒã§ããããã«æããããããè¶ äœéããã»ã¹ãžã®ãã©ãŒã«ããã¯ã䜿çšããŠãããå®è£ ããããšã¯ãåé²ããããã®è¯ãéãããããŸããã
ãã®ã³ãŒããèŠã€ããæ¹åãæããŠããããŸããïŒ ç§ã¯ããããã©ãŒã¯ã§äžŠååããããšãçªãåºãããšãã§ããŸããã
https://github.com/pandas-dev/pandas/ãåé¡ã«ãªããšæã
pytest
ãåé¡ã«ãªãå¯èœæ§ããããŸããïŒ\
ç§ã¯ããã¯æããŸãããããã¯ç§ã®ãã·ã³ã§ããŸãåäœããŸããåé¡ã¯ãããããäžè¬çã§ããããã§ã
ç§ã®å Žåãåé¡ã¯ããªã³ãã®ããã§ãã pipenv install pylint
ãå®è¡ããã ãã§ã¯ãåžžã«ããã¯ã§ãã³ã°ããŸããhttpsïŒ //github.com/pypa/pipenv/issues/2284#issuecomment-569457752ãåç
§ããŠ
ç§ã¯ãã¹ãŠã®ãããžã§ã¯ãã§åãåé¡ãæ±ããŠããŸãã
åå ã¯ããªã³ãã®ããã§ãã
PipenvïŒpipïŒã¯æ£åžžã«ã€ã³ã¹ããŒã«ã§ããŸãããããã¯ã«ã¯æ°žé ã«æéãããããŸãã
pipenv, version 2018.11.26
æå°éã®äœæ¥äŸ
djbrown@DESKTOP-65P6D75:~$ mkdir test djbrown@DESKTOP-65P6D75:~$ cd test djbrown@DESKTOP-65P6D75:~/test$ pipenv install --dev pylint --verbose Creating a virtualenv for this project⊠Pipfile: /home/djbrown/test/Pipfile Using /usr/bin/python3 (3.6.9) to create virtualenv⊠⠞ Creating virtual environment...Already using interpreter /usr/bin/python3 Using base prefix '/usr' New python executable in /home/djbrown/.local/share/virtualenvs/test-PW-auWy_/bin/python3 Also creating executable in /home/djbrown/.local/share/virtualenvs/test-PW-auWy_/bin/python Installing setuptools, pip, wheel...done. â Successfully created virtual environment! Virtualenv location: /home/djbrown/.local/share/virtualenvs/test-PW-auWy_ Creating a Pipfile for this project⊠Installing pylint⊠â Installing...Installing 'pylint' $ ['/home/djbrown/.local/share/virtualenvs/test-PW-auWy_/bin/pip', 'install', '--verbose', '--upgrade', 'pylint', '-i', 'https://pypi.org/simple'] Adding pylint to Pipfile's [dev-packages]⊠â Installation Succeeded Pipfile.lock not found, creating⊠Locking [dev-packages] dependencies⊠â Locking...
ç§ãã¡ã¯ãã®ãããã¯ã远跡ããããšãèªèããŠãããå€ãã®åé¡ãæ±ããŠããŸãã ïŒ1785ïŒ1886ïŒ1891ããã³PRïŒ1896ãåç §ããŠãã ãã
npmãšyarnã«ã¯ãäŸåé¢ä¿ããã¬ãŒã³ããã¹ãã§æå®ãããŠãããããäŸåé¢ä¿ã°ã©ãã決å®ããããã«ãäºæ³ãããåããã±ãŒãžãå®å šã«ããŠã³ããŒãããŠå®è¡ããå¿ èŠããªããšããå©ç¹ããããŸãã Pythonã®äŸåé¢ä¿ã§ã¯ã解決ããŠèšç®ããããã«ãåããã±ãŒãžã®ã»ããã¢ãããã¡ã€ã«ãå®å šã«ããŠã³ããŒãããŠå®è¡ããå¿ èŠããããŸãã ããã¯ãã ã®çŸå®ã§ããããã¯å°ãé ãã§ãã 2ååŸ ã€ããšãã§ããªãå ŽåããŸãã¯ãã¬ãŒããªãã®äŸ¡å€ããªããšæããå Žåã¯ããã€ã§ã
--skip-lock
æž¡ãããšãã§ããŸããä»ã®åé¡ã远跡ããããã«éããŸãã
ä»ã®4ã€ã®åé¡ã®ãã¡3ã€ã¯çŸåšã¯ããŒãºãããŠãããæ®ãã®1ã€ã¯2018幎以éã¢ã¯ãã£ããã£ããããŸããããã®åé¡ã¯åŒãç¶ãçºçãããããå床éãããšããå§ãããŸããïŒ
Pythonã®äŸåé¢ä¿ã§ã¯ã解決ããŠèšç®ããããã«ãåããã±ãŒãžã®ã»ããã¢ãããã¡ã€ã«ãå®å šã«ããŠã³ããŒãããŠå®è¡ããå¿ èŠããããŸã
ç§ã¯ãããä»ã§ãããã±ãŒãžã®å€§éšåã§ããã¯ãã®ãã€ãŒã«ã«ã¯åœãŠã¯ãŸããªããšæããŸããïŒ
å°ãªããšãæ¯ådlibã®ãã€ãŒã«ãäœæããå¿ èŠãããããšã¯ããã£ãŠããŸãããããã¯æãããããšã§ãã
äŸåé¢ä¿ã解決ããããã»ã¹ã¯ãããªãŒãååŸãããã³ã«ã¯ã©ã€ã¢ã³ãã§å¥ã®ãªã¢ãŒãã«ãã¯ã¢ãããå¿ èŠãªå Žåã§ããããã±ãŒãžããŒãžã§ã³ããšã«ã©ããã«ãã£ãã·ã¥ããå¿ èŠããããŸãïŒãããã¹ãã§ã¯ãããŸãããäºåŸã«ããŒã«ã«ã«ãã£ãã·ã¥ããããšãã§ããŸãïŒã ïŒã ããšãã°ãããã±ãŒãžãªããžããªã¯ã解決ãããdepããªãŒãç°¡åã«æ ŒçŽã§ããŸãã ãã£ãã·ã¥ããã解決æžã¿ã®depããªãŒã«å¯Ÿããè¿œå ã®ãããã¯ãŒã¯ãããã¯ãããã±ãŒãžå šäœãããŠã³ããŒãããŠèšç®ãããããåžžã«é«éã§ãã
FWIWãã¹ãŠã®ãããžã§ã¯ãããpipenvãåé€ããŸããïŒããã1ã€ã®äž»ãªçç±ã§ãããä»ã«ããããŸãïŒã
virtualenv
+ pip
ïŒ requirements.txt
ïŒã¯ãProdã®å±éã§ãããªãããŸãæ©èœããããã«ãªããŸããã ãããã«ãããæè¿ã§ã¯å®å
šã«åœ¢æãããã³ã³ãããå±éããŠããŸãã æ¬åœã«pipenvã«å
¥ã£ãåŸãç§ã¯ãã¯ãããã®èŠç¹ãç解ããŠããŸããã
ãã®å·ãå床éããŠãã ããã
ãã以å€ã®å Žåãpipenvãåç
§ããã±ãŒãžããŒã«ã«ãªãããšã¯ãããŸãã
æãåèã«ãªãã³ã¡ã³ã
pipfileãããã¯ããã®ãåŸ ã£ãŠããéã«ãããèªãã§ãã ãã... :)解決çãããã°çŽ æŽãããã§ãããã