スクリプトのお勉強 技術

Pipenvでライブラリ(*.whl)をキャッシュする方法

投稿日:

仕事でWebアプリケーションを作成した場合、ガンガンとライブラリのバージョンを上げたりはしない場合があります。

そして、長期間放置されるタイプのWebアプリケーションの場合、使用しているライブラリが、長期間常にインターネット上に存在するとは限りません。3年たったらライブラリがダウンロードできなくなっていたりするのはよくあることです。

なので、そのWebアプリケーションで使用するライブラリは、ローカルのgitリポジトリか何かにおいておきたい場合があります。

一般的には、vendoring というらしいです。

その方法を調べた結果、以下の感じで行こうと思います。もう少し洗礼されれば、別の方法になるかもしれませんが、以下のほうが簡単かと思いました。

pip2piというライブラリにdir2piというコマンドがあり、それはwhlが入ったディレクトリからpypi-mirror的なsimpleディレクトリを作成してくれます。

そのsimpleディレクトリをpipenvから使用する方針です。

手順

具体的な手順は以下です。

$ pipenv install --dev pip2pi
$ pipenv lock -r > requirements.txt
$ pipenv run pip download -r requirements.txt -d ./cache_pypi
$ pipenv run dir2pi -n ./cache_pypi
### cache_pypi以下にsimpleディレクトリができる。
### cache_pypiごとgitか何かに格納する。単にhttpサーバでもよい。

なお、simpleディレクトリにできるのはあくまでwhlのリンクなので注意してください。cache_pypi直下の*.whlを消してはいけません。

インストールしたいディレクリトで以下のように起動するとインストールできます。

### 上記のsimpleディレクトリを指定する。
$ pipenv install --pypi-mirror="http://localhost/cache_pypi/simple" 

ただし、個人的には、requirements.txtを出力する必要があるのが微妙です。
Pipenv.lockに書いてあるのだから、そっちを使ってダウンロードしてくれればいいのに。。

pipenvで –create-pypi-mirror的なのがあれば一発なのだが。downloadの方がいいかな。でも以下を見るとpip freeze + downloadでいいんじゃね?的に書いてあるな。。

https://github.com/pypa/pipenv/issues/1488

まぁいいか。。

参考

https://www.wergieluk.com/posts/local-static-pypi-repo/

-スクリプトのお勉強, 技術

執筆者:

関連記事

Pythonのmock.patchを使ってみる

単体テストによく使われるMockライブラリ Pythonで単体テストを行う際、実際のライブラリを使用してしまうと、実際の環境を用意しなければいけません。 例えば、データベースのテストをする際に、データ …

整形/文法チェック ツール インストールまとめ

1.はじめに 最近、仕事で複数スクリプトを組み合わせてコーディングすることが多くなりました。 それだと、各スクリプトの癖を忘れたり、そもそもどう書くのか忘れたりと、不良を作りこむ可能性が多くなります。 …

Thunderbird プラグイン WebExtensions版開発方法を調べた

初めに 最近のメールは、中身だけ見てもスパムかどうかわからないぐらい、精巧にできてます。 一方、各プロバイダでは対応ができていることも多いです。例えば、私はメールはOCNなのですが、OCNは&#822 …

unconstant – perlライブラリ

ちょっとだけperlの機能修正をしたので、そのときに使用したライブラリについて書こうと思います。 perlのunconstant です。 use constantの解除 use constantとは固 …

Python(prophet)で体重予測

最近ダイエットしていて、少しだけ成果が出たので、グラフ表示しようと思ってました。そのついでにこれからの予測もしてみようということで、過去のデータを集め、グラフ表示してみます。 google Colab …

google オプトアウト Click here to opt-out.