Pipenv: ロックの曎新が非垞に遅い

䜜成日 2018幎04月05日  Â·  47コメント  Â·  ゜ヌス: pypa/pipenv

ロックファむルの曎新は非垞に遅くなる可胜性がありたす。 暙準の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は同様のタスクを実行するように芋えたすが、さらに倚くの䟝存関係があるプロゞェクトの堎合でも、数秒しかかかりたせん。

最も参考になるコメント

pipfileがロックするのを埅っおいる間にこれを読んでください... :)解決策があれば玠晎らしいでしょう。

党おのコメント47件

私たちはこのトピックを远跡するこずを認識しおおり、倚くの問題を抱えおいたす。 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 たずえばをむンストヌルしおみおください
  • ロックが完了するたで埅ちたす。 私のマシンでは玄5分かかりたす
  • 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が参照パッケヌゞツヌルになるこずはありたせん

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