Pythonでは、ExcelやPDFのファイルを扱うのに、PyPIで公開されている外部ライブラリを使用します。インストールは、Pythonに同梱されているpip
を用います。
例えば、Excelファイルを読み書きできるライブラリ「openpyxl」をインストールするには、以下のようにコマンドプロンプトでpip install
を実行すれば、通常は問題なくインストールできます。
C:¥Users¥Taro> py -m pip install openpyxl
py -m
を付けるとPATHが通っていなくてもpipを実行できるので、この方がオススメです。詳しくはこちらをご覧下さい。
しかし、エラーになりインストールできないことがあります。よくある原因は以下の4つです。
原因 | 対策 |
---|---|
1. インターネット接続が制限されている | 方法1:プロキシサーバーを通過できるようにする |
方法2:他の環境でダウンロードしたファイルでインストールする | |
2. ファイル書込みの権限がない | 方法1:管理者権限でコマンドプロンプトを起動する |
方法2:--user オプションをつけて、pip install を実行する |
|
3. pipのバージョンが古い | 方法:pipをアップグレードする |
4. ソースからのビルドで失敗する | 方法:ビルド済みパッケージがあるバージョンを使う |
原因1の多くが、社内のプロキシサーバーによるものです。つまり、自分のPCと外部サーバー(ここではPyPI)の間の通信が、社内のプロキシサーバーにより制限されているケースです。この問題を解決するには、上表の2つの方法があります。
原因2は、Python本体をC:¥Program Files (x86)
等にインストールした場合に発生します。pip installではPython本体があるLib/site-packages
ディレクトリにライブラリをインストールします。そのため、C:¥Program Files (x86)
内のように管理者権限がないと書き込みできない場所にPython本体があるとエラーが発生します。この問題を解決するには、上表の2つの方法があります。
通常は管理者権限がなくてもpip installできます
Python本体のインストール場所は、デフォルトでは自分のユーザーディレクトリ内なので、管理者権限がなくてもpip install
できます。しかし、Python本体のインストール時に、「Customize installation」の方を選択し、「Install for all users」をチェックすると、C:¥Program Files (x86)
にインストールされるので、管理者権限がないとpip install
を実行した時にエラーが発生します。
原因3は、ライブラリによってはpipのバージョンが古いとエラーが発生します。その場合は、pipをアップグレードすれば解消します。
原因4は、NumPyのように高度な数値演算を伴うライブラリなどが対象になります。openpyxlなどでは生じません。
以下に各方法について説明します。
原因1の解決方法
インターネットに接続しているのに、接続リトライ(通常5回)が実行されて、最終的に以下のようなエラーが表示される場合は、次の方法1または方法2で解決する可能性があります。
Collecting openpyxl
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ~
(中略)
ERROR: Could not find a version that satisfies the requirement openpyxl (from versions: none)
ERROR: No matching distribution found for openpyxl
方法1:プロキシサーバーを通過できるようにする
ここで必要となる情報は、プロキシサーバーの「URL(ホスト)」と「ポート番号」です。さらに、認証プロキシの場合は「ユーザー名」と「パスワード」が必要です。社内のシステム管理者に問い合わせるか、もしかしたら社内マニュアルに記載されている場合もあると思います。
以下のようにコマンドプロンプトでset HTTPS_PROXY=~
によりプロキシの情報を環境変数にセットしてから、pip install
を実行します。
# プロキシサーバーのURLが「http://proxy.mycompany.co.jp」、ポート番号が 「8080」 の場合
C:¥Users¥Taro> set HTTPS_PROXY=http://proxy.mycompany.co.jp:8080
C:¥Users¥Taro> py -m pip install openpyxl
認証が必要なプロキシサーバーの場合は、以下のように@
を挟んで「ユーザー名:パスワード
」を指定します。
# ユーザー名が 「yamada.taro」、パスワードが 「123」 の場合
C:¥Users¥Taro> set HTTPS_PROXY=http://yamada.taro:123@proxy.mycompany.co.jp:8080
C:¥Users¥Taro> py -m pip install openpyxl
方法2:ダウンロードしたファイルでインストールする
上記の方法でプロキシを通過できれば一番簡単ですが、社内の事情やどうしても通過できない場合には、少し面倒ですが以下の手順でローカルファイルからインストールします。
つまり、プロキシがない他の環境で、ライブラリのファイルをダウンロードしておき、そのファイルからインストールします。操作は以下の手順1 ▶ 手順2 の順に行います。
(手順1)インストール用のファイルを「ダウンロード」
まず、他の通信環境(プロキシなし)で、以下のpip download
コマンドで必要なファイルをダウンロードしておきます。
# ライブラリ 「openpyxl」 のファイルを 「openpyxl_srcディレクトリ」 にダウンロード
C:¥Users¥Taro> cd Documents
C:¥Users¥Taro¥Documents> py -m pip download -d openpyxl_src openpyxl
このコマンドを実行すると、ドキュメントフォルダのなかに「openpyxl_srcディレクトリ」が作成され、以下のようにその中にインストールに必要なファイルがダウンロードされます。
他のネット環境を確保できない場合
他のネット環境がない場合や上記のpip downloadでうまくダウンロードできないときは、手動でブラウザからダウンロードする方法もあります。以下のページに詳しく説明していますので、参考にしてください。
(手順2)ダウンロードしたファイルを用いて「インストール」
次に、ダウンロードしたファイルを用いてインストールします。「openpyxl_srcディレクトリ」をUSBメモリなどにコピーして、インストールするパソコンのドキュメントフォルダに移してください。
以下のようにコマンドプロンプトで、カレントディレクトリをドキュメントフォルダに移動し、pip install
でインストールを実行します。
# 「openpyxl_srcディレクトリ」 にあるファイルを用いて 「openpyxl」 をインストール
C:¥Users¥Taro> cd Documents
C:¥Users¥Taro¥Documents> py -m pip install --no-index --find-links=openpyxl_src openpyxl
このように、--no-index --find-links=openpyxl_src
を指定すると、通常の参照先(PyPI)を検索しないで、ローカルにある「openpyxl_srcディレクトリ」の中身だけでインストールを実行します。
原因2の解決方法
pip install
を実行すると以下のように「アクセスが拒否されました。」とエラーに表示される場合は、次の方法1または方法2で解決する可能性があります。
Installing collected packages: openpyxl
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] アクセスが拒否されました。: 'C:\\Program Files (x86)\\Python37-32\\Lib\\site-packages\\openpyxl'
Consider using the `--user` option or check the permissions.
方法1:管理者権限でコマンドプロンプトを起動する
以下のどちらかの方法で、コマンドプロンプトを管理者権限で起動して、そこでpip install
を実行します。
- + X でメニューが表示されたら、A(「コマンドプロンプト(管理者)」)。
- でスタートメニューが表示されたら、
cmd
を入力。「コマンドプロンプト」を右クリックしてメニューから「管理者として実行」を選択。
なるべく次の「方法2」でインストールしてください
この「方法1」では、pip install
を実行する度に、C:¥Program Files (x86)
内にファイルを書き込むので、セキュリティ上おすすめしません。なるべく、次の「方法2」の採用を検討してください。
方法2:--user
オプションをつけて、pip install
を実行する
以下のように、--user
オプションを付けてpip install
を実行すると、ユーザーディレクトリ内にライブラリがインストールされます。ユーザーディレクトリ内であれば、管理者権限は不要で書き込みできるのでエラーは生じません。
C:¥Users¥Taro> py -m pip install openpyxl --user
インストール先を確認する方法
--user
オプションを付けた場合のライブラリのインストール先は、以下のコードで確認できます。このように、Python本体の場所(Program Filesディレクトリ)ではなく、ユーザーディレクトリ内にインストールされます。
>>> import site
>>> site.getusersitepackages()
'C:¥¥Users¥¥Taro¥¥AppData¥¥Roaming¥¥Python¥¥Python37¥¥site-packages'
なお、Python本体の場所は、以下のコードで確認できます。
>>> import sys
>>> sys.executable
'C:¥¥Program Files (x86)¥¥Python37-32¥¥python.exe'
# デフォルトのインストールをした場合は以下の場所
>>> sys.executable
'C:¥¥Users¥¥Taro¥¥AppData¥¥Local¥¥Programs¥¥Python¥¥Python37-32¥¥python.exe'
原因3の解決方法
pipをアップグレードするには以下のコマンドを実行します。
C:¥Users¥Taro> py -m pip install -U pip
# または
C:¥Users¥Taro> py -m pip install --upgrade pip
ここで、pip自体のアップグレードでエラーが表示される場合は、以下のようにさらに--force-reinstall
オプションを付けて再度実行してください。
C:¥Users¥Taro> py -m pip install --force-reinstall -U pip
# または
C:¥Users¥Taro> py -m pip install --force-reinstall --upgrade pip
原因4の解決方法
NumPyなどのデータ分析によく用いられるライブラリのインストールは、ビルド済みのファイルが準備されているおかげで通常はスムーズにインストールできます。
しかし、Pythonのバージョンがアップグレードしたばかりの時点では、まだビルド済みのファイルが準備されていない場合があります。そのときは、pip installではソースをダウンロードしてビルドしますが、パソコンにNumPyなどをビルドできる環境がないと以下のようなエラーになります。
この例のエラーは、2020.10.05にリリースされたPython3.9(Windows版)でpy -m pip install NumPy
を2020.10.16に実行した画面です。このパソコンにビルドできる環境(Microsoft Visual C++ 14.0)がないためにエラーが生じています。
Microsoft Visual C++ 14.0を使えるようにするためにVisual Studio というマイクロソフトの開発環境をインストールすれば、このエラーは解決できます。しかし、そのためにVisual Studioをインストールするのは容量も大きく時間もかかります。
このような場合は、1つ前のバージョンのPythonを使用するのが一番簡単です。例えば、Python3.9がリリースされてNumPyのインストールに失敗する場合は、既にPython3.8がインストール済みであれば、次の項にあるように、py -3.8 -m pip install NumPy
によりPython3.8にインストールして、Python3.8でプログラミングして使います。
注意事項:複数のバージョンをインストールしている場合
複数のバージョンのPythonをインストールしている場合は、以下の-3.6
のようにインストールしたいバージョンを指定してください。何も指定しないと通常は新しいバージョンの方にインストールされます。
# 例えば、「3.6」 と 「3.7」 が共存するパソコンで、「3.6」 の方にインストールする場合
C:¥Users¥Taro>Documents> py -3.6 -m pip install --no-index --find-links=openpyxl_src openpyxl
なお、ライブラリのインストール用ファイルをダウンロードする場合も同様です。
# 3.6用にライブラリのファイルをダウンロードする場合
C:¥Users¥Taro>Documents> py -3.6 -m pip download -d openpyxl_src openpyxl
上記の他に、初めからライブラリも一緒にインストールされるAnacondaの使用も考えられますが、本サイトでは使用しません。