リファクタリングをPythonで実践!基本手法とコード例・注意点まで
料理の際にピーラーやチョッパーがあると便利なように、Pythonにもプログラミングがはかどるライブラリ(ツール)が無料で多数公開されています。
そのライブラリをインストールしたり管理したりする際に使用する管理ソフトが「pip」です。pipについて詳しくご紹介します。
1.Pythonのpipとは?
pipは、Pythonのパッケージマネジャーです。他言語のPHPではComposer、JavaScriptではnpmなどに値します。
pipならではの使い方などもあるので基礎を押さえておきましょう。
①pipを使ってできること
Pythonには標準の状態でもCSVやOSを操作できる便利なモジュールがセットされていますが、pipのライブラリを追加するとできることがさらに増えます。
例えばPythonでエクセルを編集したりするときに便利な「openpyxl」やAI系の処理を手伝ってくれる「TensorFlow」、画像処理を手伝ってくれる「OpenCV」など、詳しいことはわからなくても、pipでライブラリをインストールすれば一気にできることが増えるのです。
②pipの運営母体
パッケージマネジャーのpipは、Python Software Foundationによって運営されています。pipを使ってインストールする各種ライブラリの作成・管理は、個人から団体まで様々です。
ライブラリの多くは、MITやBSD、Apacheライセンスで、必ずしも動作を保証するものではないことを事前に理解しておきましょう。
近年は、Webサービスなどを展開する企業(LINEやGoogleなど)がAPIの公開に合わせて、ライブラリを公開するケースが一般的です。
③pipを使う前の注意点
Python初学者の多くが「pipは便利、早く使いたい」と焦り、すぐに「pip install …」とコマンドを入力しがちです。
筆者自身も失敗したことですが、直ぐに「pip install …」をするとあとでPythonプログラミングが立ち行かなくなるかもしれません。
pipでライブラリをインストールする際は、以下のように仮想環境を設定してから「pip install」しましょう。
(Windows)
python -m venv env
env\Scripts\activate.bat
(Mac, Linux)
python -m venv env
source env/bin/activate
2.pipの使い方
pipの基本的な操作をご紹介します。
①pipのバージョンを確認する
pipは、Python3.4以上であれば標準でインストールされています。まずはどのバージョンが入っているか確認してみましょう。
pipのバージョンチェックは、以下のコマンドで実行できます。
pip -V
もしくは
pip3 -V
結果
pip 21.1.1 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
OS関係なく同じコマンド入力で、pipは操作できます。
pipの後に「3」が必要かどうかは、Pythonの設定によって変わってきます。
②パッケージをインストールする
バージョンが確認できたら、パッケージをインストールしてみましょう。
python3 -m venv demo
source demo/bin/activate
pip install openpyxl
上記は、demoという仮想環境を設定し、エクセル操作を手伝ってくれるライブラリ「openpyxl」をインストールしています。
Windowsの場合は2行目を以下のように変えて実行してみてください。
python3 -m venv demo
demo\Scripts\activate.bat
pip install openpyxl
結果
はじめて仮想環境を作成し、パッケージをインストールすると上図のように「WARNING」が表示されることがあります。これはpipのバージョンが古いことを警告する文です。
以下のコマンドを実行すると次回以降パッケージをインストールした際に「WARNING」は表示されなくなります。
コマンド:python -m pip install –upgrade pip
③バージョンを指定してインストールする
「pip install」の際にバージョンを指定しなければ、最新バージョンが自動的に選択されてインストールされます。
しかし、中にはPython3.6など少し前のバージョン環境だったりすると、最新のpipではインストールできない場合もあります。
そうした際は、昔のバージョンに合わせて「pip install」するとうまくいきます。
バージョンを指定してライブラリをインストールする方法は、以下の通りです。
pip install pandas==1.3.5
なお、PyPiサイトの左サイドバー「Release history」をクリックすると、これまでのバージョンが確認できます。旧バージョンをインストールする際は確認しましょう。
④パッケージをアップグレードする
アプリやOSに限らず、Pythonのライブラリも新しいに越したことはありません。
ライブラリをアップグレードするには、以下のコマンドを実行します。
pip install --upgrade pandas
もしくは –upgrade を短縮して以下のように実行しましょう。
pip install -U pandas
最新版かどうかを確認する
インストールしているライブラリが最新かどうかは、以下のコマンドで確認可能です。
pip list --outdated
もしくは
pip list -o
結果
Package Version Latest Type
---------- ------- ------ -----
pandas 1.3.5 1.4.0 wheel
pip 21.1.1 21.3.1 wheel
setuptools 56.0.0 60.5.0 wheel
⑤人気のバージョンを確認する
Pythonのライブラリは、npmなどに比べてどのバージョンがよくダウンロードされているかわかりにくいですよね。
そんな時は「pypistas」というライブラリを使用すると各ライブラリのダウンロード数を確認でき、使用有無の判断やバージョン選択の判断に役立ちます。
pip install pypistats
とした後に
pypistats python_minor --last-month pandas
とすると、先月のpandasのダウンロード状況を確認できます。
(demo) ➜ traino pypistats python_minor --last-month pandas
| category | percent | downloads |
|:---------|--------:|-----------:|
| 3.7 | 54.18% | 38,541,658 |
| 3.6 | 17.45% | 12,412,551 |
| 3.8 | 15.43% | 10,978,710 |
| 3.9 | 4.19% | 2,982,145 |
| 2.7 | 3.20% | 2,279,230 |
| null | 2.42% | 1,722,842 |
| 3.5 | 2.25% | 1,599,109 |
| 3.10 | 0.80% | 565,723 |
| 3.4 | 0.04% | 28,856 |
| 3.11 | 0.03% | 19,241 |
| 3.3 | 0.00% | 42 |
| 3.2 | 0.00% | 27 |
| Total | | 71,130,134 |
Date range: 2021-12-01 - 2021-12-31
⑥インストール済みのパッケージを確認する
「このライブラリあったかな?」と思った時は、インストール済みのライブラリ・リストを表示するとわかりやすいです。
ライブラリのリスト表示は、以下のコマンドでOK。
pip list
結果
(demo) ➜ traino pip list
Package Version
------------------ ---------
anyio 3.5.0
certifi 2021.10.8
chardet 4.0.0
charset-normalizer 2.0.10
DataProperty 0.54.2
dominate 2.6.0
et-xmlfile 1.1.0
・・・以下省略
⑦パッケージを検索する
Pipでインストールしたかどうか、どのようなライブラリだったか等の情報は、以下のコマンドで確認できます。
pip show pandas
結果
(demo) ➜ traino pip show pandas
Name: pandas
Version: 1.3.5
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: https://pandas.pydata.org
Author: The Pandas Development Team
Author-email: pandas-dev@python.org
License: BSD-3-Clause
Location: /Users/a01/Documents/p/python/traino/demo/lib/python3.9/site-packages
Requires: numpy, python-dateutil, pytz
Required-by:
まだインストールしていない場合は、以下のようなレスポンスがあります。
(demo) ➜ traino pip show dropbox
WARNING: Package(s) not found: dropbox
⑧パッケージをアンインストールする
Pythonプログラミングを進めていくと、似たようなライブラリをインストールすることもあります。
システムの簡素化とライブラリ同士の競合バグを避けるために、できる限り必要最低限のライブラリ環境であることが好ましいです。
不要になったライブラリは、以下のコマンドでアンインストールできます。
pip uninstall pandas
結果
3.インストールできない場合
自宅のパソコンなどで「pip install」する場合は特に問題ないと思いますが、職場や学校のパソコンなどで「pip install」するとエラーが起きるかもしれません。
pip installできない2つのケースをご紹介します。
①プロキシサーバーにより制限されている
職場や学校等で、外部への通信を制限されている場合に起きることがあります。
エラーメッセージ
Retrying (Retry~…)'ProxyError('Cannot connect to proxy~…
この場合は、PyPiの該当ページからライブラリ本体をダウンロードして、インストールを試みましょう。
②権限不足
レンタルサーバーなどの共有環境で「pip install」をすると権限エラーが発生することがあります。
エラーメッセージ
PermissionError: [Errno 13] 許可がありません: '/etc'
この場合は、「pip install」できる場合とできない場合があります。
システム管理者に確認の上、コンプライアンスを遵守した対応を心がけましょう。