Pipenvは非常に遅いです。
パッケージのダウンロードには時間がかかります。
パッケージをインストールします。
そして、ファイルをロックします。
残念ながら、これは真実です。
ちなみに、 Pipfile
でいくつかの追加のインデックス(ソース)を使用していますか?
もしそうなら、それは問題の考えられる理由です。
https://github.com/pypa/pipenv/issues/2730#issuecomment -423599283
「Poetry」(パッケージマネージャー)プロジェクトは、はるかに高速なハッシュを備えています。
あなたが彼らのアルゴリズム(またはより速い)を使うならば、それはクールでしょう。
そして、-helpのような単純なものが5秒かかる理由がわかりません。
たぶん、いくつかのコードパスは遅延ロードする必要があります。
ハッシュに特別なアルゴリズムを使用するのではなく、sha256を使用します。 詩は、ハッシュが大幅に高速であるかどうかを示すハッシュを信頼しているのではないかと思います。 セキュリティのためにすべてのファイルを再ハッシュします。
問題である単純な引数を実行するのに5秒かかる場合は、それに関する問題を詳細に開く必要があります。 機能にコストをかけずにパフォーマンスを向上させるものをすべてマージできれば幸いです。
ハッシュを信頼しますか? ロックファイルを使用するときにハッシュがチェックされている場合は、良い考えのように思えます。
ピップもハッシュをチェックしますね。
とにかく:パッケージを順番にリクエストしますか? いくつかのループ、シリアルルックアップ、および広範なオブジェクト生成が疑われます。
ヘルプコールが遅いのもこの症状だと思います。
コードをスキムしてスキャンしたところ、ベンダーパッケージは名前空間パッケージではないことがわかりました。 ベンダーへのすべてのリクエストは、その中のすべてのパッケージをロードします=>名前空間は怠惰です。
さらに悪いことに、パッチが適用された標準パッケージ。 また、パッチは名前空間パッケージではありません。
def _patch_path():すべてのベンダーパッケージをロードします。 再びパフォーマンス!
その場でパッチを適用してキャッシュするレイジーローダーを使用します。
さらに悪いことに、パッチが適用された標準パッケージ。 そしてパッチはベンダーのようなものです:いいえ
名前空間パッケージ。
def _patch_path():すべてのベンダーパッケージをロードします。 再びパフォーマンス!
その場でパッチを適用してキャッシュするレイジーローダーを使用します(本当に
パッチを当てたい)。
Pipには、キャッシュディレクトリを指定するためのいくつかのオプションがあり、代わりにそれらを使用します
パッチ適用。
私の意見では、pipenvはクリックのような派手なものも使用すべきではありません
色さえこのようになくなっています。 これは、コアコンポーネントの単なる膨張です。 私
依存関係が非常に多いため、速度低下を特定することすらできませんでした
(条件付きのロードとカプセル化が役立つ場合があります)。
再実装が簡単になると直感的にゆっくりと感じます
このプロジェクトを修正するよりも。 それが詩を速くするものです。
暴言を叫ぶ。 私は本当にpipenvを使いたいです(そしてそれを
過去)しかし、それは遅すぎます。 私が良いインターネットを持っていなかったとき、詩は働きました
pipenvが数時間かかった間、数分以内に。
@devkral
time
を使用する: pipenv --help 0,45s user 0,07s system 99% cpu 0,522 total
なので、目立ちますが、さらに時間のかかるアクション(パッケージのインストールなど)なしでpipenvを呼び出すことが「まれ」であることがわかります。IMOは実際には問題ではありません。 。 もちろん、遅延読み込みは便利ですが、他の場所でより多くの利点が見つかる可能性があります。
私が個人的に反対しているのは、目のキャンディーを削除するという概念です。これは、実際に情報の検索を高速化し、CPU時間の数ミリ秒を取り戻すために、数ミリ秒から数秒の人的時間(使用中、または開発/サポート時間)を犠牲にします。 )。
今日初めてやってみました。 しかし、ipythonとjupyterをインストールするのに30分以上かかります:
Python 2.7を使用してpipenvを使用して環境を作成し、 pipenv shell
を実行した後、私は次のように考えました。
pipenv install ipython[all] jupyterlab
はまだPinning VCS Packages...
なので、これは私のpythongitリポジトリの1つにすぎません。
しばらくの間、新しいリリースはありませんでしたが、主にtravis ciビルドが10mの非アクティブ状態の後にタイムアウトしたため、 pipenv update
の著しい速度低下に気づきました。 追加のパッケージに関しては何も新しいことはありません。
@techalchemy https://github.com/pypa/pipenv/issues/2284の複製?
複製のために閉じる
時間がかかる場合は、そのでたらめ、私の言語について申し訳ありません
時間があれば、このpipenv製品の修正に取り組みます。 壊れている。 それは非常に遅いです-それがこれほど遅い理由はありません。 ツールが依存関係を評価したいと思っていることは認識していますが、更新できると判断した後、Pipenvはロックファイルの操作に多くの時間を費やしています。 さらに、特定のパッケージ(Tensorflowなど)のインストールは、PipenvおよびPython 3では機能しません。原因-Pipenvは、Python3環境を実行していることを基になるsetup.pyに通知しません。 これにより、TensorflowはPython3と互換性のないPython2依存関係をインストールしようとします。
Python 2のサポートへのこの愚かな依存をやめ、前進する準備はできていますか?
pipenvinitでさえ途方もなく遅いことがわかりました。 これだけで削除してしまいました。 何かをするのがとても遅く、生産性に影響を与えていたので、virtualenvを優先して削除しました。 pipenvは、virtualenv、pyenv、venvの中で最も優れているように見えたので、これは残念です...ただそれはひどく遅いです。
それは残念です。
それは非常に遅く、不十分です
最も参考になるコメント
時間がかかる場合は、そのでたらめ、私の言語について申し訳ありません