パッケージをインストールするときにpipコンパイルバイナリを保存できますか?

パッケージをインストールするときにpipコンパイルバイナリを保存できますか?

私はRaspberry Pi 3プロジェクトを進めています。私のプロジェクトに必要なものの1つはcythonです。

Virtualenv内でRaspberry Piを実行するにはpip install cythonCythonを最初にコンパイルする必要があるため、完了するのに約40分かかります。この40分間、topccが実行されており、1つのコアを100%使用してコンパイルしようとしています。

SDカードを新しいRaspbianイメージにリセットする必要があるため、1日に数回これを行う必要があります。これは明らかに時間がかかり、進行速度が遅くなります。

pipがcythonをコンパイルした後、バイナリファイルはどこに保存されますか?仮想環境で?ファイルシステムの他の場所にありますか?

virtualenvに保存されている場合は、virtualenvフォルダ全体をアーカイブして新しいLinuxに復元して動作することを期待できますか?私はvirtualenvが移植可能ではないことを知っています(arg--relocatable自体の問題があるように見えるargを使用しないでください)。しかし、私の場合、virtualenvを復元すると、virtualenvへのパスは変わりません。

ベストアンサー1

キャッシュディレクトリからホイールファイルをコピーするだけです。pip install pkgnameリリースされ、取り付け可能な互換ホイールがないことが確認されたら、pipソースdistでホイールをビルドし、将来の再インストール時に再利用できるようにキャッシュに保存します。ホイールファイルを見つけるには:

$ find $HOME/.cache/pip -type f -name Cython*.whl

ローカルファイルからインストールするには、ファイルをバックアップしてください。

$ pip install path/to/file.whl

ここからどこに行くのか:ローカルストレージ

事前に構築されたホイールコレクションがある場合、次のステップはインストールするローカルPyPIリポジトリを設定することです。最も簡単な方法は、ホイールをパッケージ名を付けたディレクトリに設定し、単純なHTTPサーバーを実行することです。

└── repodir
    ├── Cython
    │   └── Cython-0.28.0-cp36-cp36m-linux_aarch64.whl
    ...

たとえば、サーバーを起動します。

$ python3 -m http.server -p 9000

これでリポジトリを次に渡すことができますpip

$ pip install Cython --extra-index-url=http://127.0.0.1:9000

pip.confまたは、毎回入力する必要がないようにリポジトリURLを維持しておくこともできます。

# pip.conf
[global]
extra-index-url=http://127.0.0.1:9000

もっと詳しく知りたい場合は、devpiさまざまなパッケージ管理、Web UIなどを提供する優れたPyPIストレージサーバーがたくさんあります。

おすすめ記事