0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【備忘録】pip installが使えないときにローカルでPythonライブラリをインストールする

Posted at

背景

Pythonで開発をしていたところ、pandasライブラリが必要になったので、コマンドプロンプトにてpip install pandasを実行しました。すると、以下のようなエラーを吐きました。

pip install pandasのエラー
$> pip install pandas
WARNING: REtrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 407 Proxy Authentication Required',))': /simple/pip/
WARNING: REtrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 407 Proxy Authentication Required',))': /simple/pip/
WARNING: REtrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 407 Proxy Authentication Required',))': /simple/pip/
WARNING: REtrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 407 Proxy Authentication Required',))': /simple/pip/
WARNING: REtrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 407 Proxy Authentication Required',))': /simple/pip/
ERROR: Could not find a version that satisfies the requirement pandas (from versions: none)
ERROR: No matching distribution found for pandas

pip installインターネット(PyPI)から自動でライブラリを取ってきてインストールしてくれるコマンドです。
インターネットからファイルを持ってこようとしたときに、コマンドの実行がプロキシに阻まれてしまったようです。

会社のプロキシサーバーからインターネットに接続している環境では稀によくあるケースのようで、プロキシをset HTTPS_PROXY = http://ProxyServerIP:Portなどで設定できれば直で解決できるようですが、今回はプロキシを通すアプローチはできませんでした。

そこで私はPyPIからライブラリのインストール用ファイルをダウンロードしにいって、ローカルでインストールする手法を取りました(本題)。

結論

お急ぎの方のために解決法を先に記述しておきます。

  1. PyPIから必要なライブラリのソースファイル(Source Distribution)とビルト済みファイル(Built Distribution)をダウンロードする
  2. ダウンロードしたディレクトリの1つ上の階層で以下を実行する
py -m pip install --no-index --find-links=package-name package-name

手順

PyPIからライブラリのディストリビューションをダウンロードし、ローカルでインストールする手法について具体的な手順を記述します。
今回はpandasをインストールするという想定で記述していきます。

ローカルインストールに関する公式アーティクル

今回の環境は以下の通りです。

# バージョン
OS Windows 10 64bit
Python 3.10.3
pip 22.0.4
setuptools 68.1.2

1.PyPIにpandasのディストリビューションを拾いに行く

PyPI(Python Package Index)とは、Pythonのライブラリがたくさん置いてあるリポジトリです。
ふだんpip downloadpip installを実行するとき、pipはこのDBを参照しに行っています。

見に行ってもらったらわかりますが、PyPIではかんたんに手動でディストリビューションをダウンロードすることができます。
今回はpandasが目標なので、検索欄にpandasと入力していきます。
検索結果から、バージョン番号などをよく見て必要なものを選びます。
今回は2023/06/29にリリースされているpandas 2.0.3を選択しました。
注※Pythonのバージョンごとに使えるライブラリのバージョンが異なってくるので確認が必要

pandas 2.0.3を開くと、pandasのかわいいロゴとともにプロジェクトの説明が現れます。
画面左のナビゲーション欄から、ファイルのダウンロードに進むことができます。
PyPIのpandasのページ

ここで知っておきたいのが、必要なディストリビューションについて。
Pythonのライブラリをインストールするには、ソースファイルとビルト済みファイルが必要です。これらについての詳しい説明は本記事では割愛します。
PyPI上ではだいたい以下の形式で落ちてます。

  • ソースファイル : tar.gzファイル
  • ビルト済みファイル : whlファイル

whlファイルの選び方

pandas 2.0.3もそうですが、whlファイルが複数置いてある場合があります。
どれを選べばいいの?となったので、補足説明として選び方を書いておきます。

まずpandas 2.0.3の場合ではcp311とかcp39というのが見えると思います。
この数字はそれぞれPythonのバージョンを表しており、cp311ならPython 3.11.*、cp39ならPython 3.9.*を意味します。
つまり、自分のPythonバージョンに合致するwhlファイルを選べばいいわけです。
win_amd64とかmacos_11_0_arm64とかは説明するまでもないと思うので割愛します。

ちなみに、Built Distributionが1つしかない場合があります。
これもファイル名を見ると*-py2.py3-none-any.whlとなっていて、Python2とかPython3ならどれも対応してるよ!とわかります。すごいですね。

自分のPythonのバージョンに合致するwhlファイルがない場合は、そのライブラリはそのバージョンのPythonに対応していません。Pythonをアップグレードかダウングレードしましょう。
実はPyPIの画面左のメタデータ欄に必須Pythonバージョンが書いてあったりもします。


ここまでで2つのディストリビューションファイルをダウンロードすることができましたが、格納場所にもコツがあります。
以下のことを守って格納してください。

  • コマンドプロンプトで実行できるディレクトリであること
  • .tar.gzと.whlを格納するフォルダに別のファイルがないこと

2点目は必須ではない(と思います)が、こうしておいたほうがインストールするときに楽です。また本記事ではこのように保存した前提で進めていきます。
ディストリビューションの格納
Windows11の批判はやめてください

2.ライブラリをインストールする

ディストリビューションファイルを準備できたので、いよいよライブラリをインストールできます。
まずは、コマンドプロンプト(ターミナル)でディストリビューションファイルを置いたディレクトリの1つ上の階層に移動します。
※エクスプローラーのパスの欄にcmdと入力すると表示しているディレクトリでコマンドプロンプトが開きます。
では、インストールするコマンドを実行していきます。

py -m pip install --no-index --find-links=pandas pandas

解説を入れておきます。

  • py -m : Pythonのパスが通っていなくても実行できる
  • --no-index : パッケージインデックスを無視する
  • --find-links : 指定されたURLまたはディレクトリから必要ファイルを探す

--no-index--find-linksを組み合わせることでオフラインでのインストールを可能にしています。ここで格納方法のコツが活きてくるわけですね。

4.pandasのインストールにあたって発生したトラブルと対応(備忘録)

Successfully installedと表示されればインストール完了です。お疲れ様でした。
今回の私の環境ではここでも失敗がいくつかあったためさらに記述していきます。

まず、上記コマンドを実行したところ、setuptoolsのバージョンが足りないよ!と言われました。
Python3.10.3のデフォルトではsetuptoolsのバージョンは58.1.0ですが、pandasをインストールするためにはsetuptools 61.0.0異常が必要との旨のエラーが発生しました。
そこで、pip install -U setuptoolsを……というわけには当然いかず、setuptoolsもPyPIから落としてきてインストールしました。

上記手順と同様に.tar.gzと.whlをsetuptoolsと名付けたフォルダに保存し、py -m pip install -U --no-index --find-links=setuptools setuptoolsでインストール(アップデート)しました。
-Uオプションは--upgradeです。

setuptoolsも対応バージョンにアップデートできたし、いざpandasインストール!再びエラーを吐きました。

エラー内容
>py -m pip install --no-index --find-links=pandas pandas
Looking in links: pandas
Processing c:\users\test\desktop\test\pandas\pandas-1.4.1-cp310-cp310-win_amd64.whl
ERROR: Could not find a version that satisfies the requirement numpy>=1.21.0; python_version >= "3.10" (from pandas) (from versions: none)
ERROR: No matching distribution found for numpy>=1.21.0; python_version >= "3.10"

numpyが足りないぞと言われています。そう、pandasには依存しているライブラリがあります。
pip installであれば、依存するライブラリも一緒にインストールしてくれたりするんですが、やはりローカルでインストールを試みている以上、事前に依存ライブラリがなければインストールに失敗するみたいです。
参考までに、私の環境でpandasインストールするときに要求された各ライブラリとバージョンは以下です。

ライブラリ名 バージョン
numpy 1.21.0
python-dateutil 2.8.2
pytz 2020.1
six 1.5
tzdata 2022.1

これらのライブラリも同様にPyPIから落としてローカルでインストールしました。
ちなみに、python-dateutilはsixに依存しているのでpython-dateutilより先にsixをインストールする必要がありました。

まとめ

今回は、pip installがネットワークの関係上使用できないときにローカルでPythonライブラリをインストールする方法について備忘録として記述しました。
プロキシを通せれば一番良かったのですが、自分でどうにかできないかと手法を探ってみました。pip installないしはpip downloadが使えなくて困った場合に役に立てたら光栄です。
実は、pandasの依存ライブラリが不足しているとき、py -m pip install 中略 pandasを1度実行するたびに1つしか不足ライブラリを挙げてくれず、何度もpy -m pip install 中略 pandasを実行して依存ライブラリが不足していると言われるというのを繰り返していました。先に依存ライブラリを調べてまとめてインストールすればよかったですね。

余談ですが、自作のライブラリをインストールするときにも今回の手法は応用できます。
ライブラリを自作するようなつよつよエンジニアには釈迦に説法な記事でしたが、最後までお読みいただきありがとうございました。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?