プロキシ環境下でpip installを使用してライブラリを追加する
Pythonにおけるプロキシ環境下で、pip installが上手くいかない問題を解決する方法について紹介したいと思います。
オフラインインストールをやってみたけどなんだかダメという場合があります。
個人的にかなり躓ながら解決したので参考になるかと思います。
- 上手くいかない問題
- 解決法
- まとめ&考察
これらについて紹介していきます。
■pip installが上手くいかない問題
- pip installが出来ない問題
会社内などからプロキシサーバー経由でpip installを使用しても上手く行かない場合があります。
プロキシサーバー経由だとアクセスを弾かれてしまう感じです。
そんな時に解決策を探ると出てくるのが「pip download」です。
もし、プロキシ経由でない別PCが使用できるのであればこの方法が使えます。
このコマンドはライブラリをインストールするのではなく、ファイルをダウンロードのみ行う機能となります。
仮に、「Pandas」を「lib」フォルダにダウンロードしたいとすると、
pip download -d lib –no-binary :all: pandas
このようになります。
これで関連するファイルも含めてカレントディレクトリ直下の「lib」フォルダに一括でダウンロード出来ます。
ダウンロードしたファイルをインストールしたいPCに持っていけばいいわけです。 - ダウンロードしたはずなのにインストールに失敗する
ライブラリをインストールしたいPCに先ほどのダウンロードしたファイルをフォルダごと持っていきます。
libフォルダにあるダウンロードしたファイルを利用してインストールするには
pip install –no-index –find-links=lib pandas
で可能です。
上手くいかない場合はカレントディレクトリを確認しましょう。
カレントディレクトリ直下にlibフォルダがあるという前提の設定になっています。
しかし?
ファイルの準備をきちんとし、オプションなども間違えずに設定しているにもかかわらず上手くいかない。 - ファイルが足りない?
追加したいライブラリによっては関連するいくつかのライブラリファイルが必要になる場合があります。
実はpip downloadを使用しても必要な全てのファイルが揃っているとは限らないのです。
■解決法:pip downloadをさらに活用する
- 足りないファイルを個別にダウンロードする
エラーコードを見てみると確かにそれっぽいことが書いてあるので、足りていないと思われるファイルを手に入れる。
https://pypi.org/
このサイトではPythonのライブラリが公開されています。
名前で検索することで必要なファイルをダウンロードすることが出来ます。 - それでもダメな場合
ファイルの形式には「.tar.gz」という形式と「.whl」という2つの形式があります。
同じライブラリでも両方の形式が公開されている場合があるので、上手く行かない時は両方ダウンロードしてしまいましょう。
それでもうまくいかない場合は、pip downloadで一括で落としたライブラリに関しても、「.tar.gz」形式と「.whl」ファイル形式を両方ダウンロードしてみましょう。
やり方は、
pip download -d ダウンロードするフォルダ名 –only-binary :all: ライブラリ名
です。
enterせずに1行でコマンドを入力して実行してください。
上で紹介した
pip download -d ダウンロードするフォルダ名 –no-binary :all: ライブラリ名
と合わせてダウンロードすれば両方のファイル形式が、公開されているものに関して全て揃うはずです。
(ライブラリによってはもともと片方の形式しかない物もあります) - 実例
自分の場合は「PyAutoGUI」をダウンロードした際に、「setuptools」と「wheel」が足りていませんでした。
これらはPyAutoGUIを pip download した際に含まれていませんでした。
■まとめ&考察
大まかな解決手順としては
- プロキシの無い別PCでpip downloadによりファイルをダウンロード
- インストールしたいPCにダウンロードしたファイルを持っていく
- pip installでオフラインインストールをする
- ファイルが足りない場合は個別にpyplサイトよりダウンロードして再度インストール
- それでもダメなら「.tar.gz」形式と「.whl」ファイル形式を両方をそろえて再度インストールしてみる
のような感じです。
通常 pip download は依存関係にあるものも含めて全てダウンロードしてくれると思っていました。
setuptools と wheel は名前から察するに、 pip install に必要な汎用的ライブラリなのでしょう。
制限のない通常のPC環境では何かのライブラリを pip install した際に同時に組み込まれるのでしょう。
プロキシ経由でしかインターネットに繋がったことのないPCだとそれが出来ないのかと思われます。
今回の現象はプロキシ環境によるものなので、通常はいつの間にか回避できている問題がプロキシという制限により表に現れるというものでした。
「openpyxl」は特に問題なくできたんですけどね。
依存関係という概念に気付くまでが長かったです。
色々検索しても断片的な情報しかなかったので、それらをつなぎ合わせるのに苦労しました。
今後も発見したらこのような問題の解決法を取り上げていきたいと思います。
この方法でうまくいかないという方はこちらの記事も参考にしてください。
【Python】プロキシ環境下で pip download を利用せずにライブラリを追加する
■参考にしたサイト様
pip downloadのドキュメント:オプション設定など:
https://pip.pypa.io/en/stable/reference/pip_download/
Python Package Index:オフラインインストールの為のダウンロードサイト:
https://pypi.org/
コメント