こんにちは、吉政創成 菱沼です。
今回もPythonエンジニア育成推進協会のPython 3 エンジニア認定実践試験の主教材「Python実践レシピ/技術評論社」を使って学びたいと思います。
前回はpipコマンドによるパッケージ管理を学びました。今回も引き続き、pipコマンドの基本を学びます。
パッケージのバージョンを管理する
まずパッケージのアップグレードの方法です。
P.3
インストール済みパッケージのアップグレードを行う場合は、「pip -U install パッケージ名」(または「pip –upgrade install パッケージ名」)コマンドを実行します。
なお、pip自体もPythonパッケージですので、新しいらしいバージョンがリリースされたら「python -m pip install –upgrade pip」でアップグレードする必要があります。
ここの記述内にあるコマンドについて、誤りがあったとのことで、協会から訂正が入っています。
誤:「pip -U install パッケージ名」(または「pip –upgrade install パッケージ名」)
正:「pip install -U パッケージ名」(または「pip install –upgrade パッケージ名」)
早速、前回インストールしたsampleproject1.3.1から最新版にアップグレードしてみました。現在の最新版はPyPIで確認したところ3.0.0でした。ちゃんと3.0.0に上がっています。

そして次にダウングレードの方法です。
P.3
–upgradeというオプション名ですが、前述の「パッケージインストール」(P.2)で紹介したバージョン指定と組み合わせることでダウングレードもできます。
テキストでは1.2.0にダウングレードしているのですが、その際、上記のコマンドの最後に指定したいバージョンの番号(==1.2.0)が付け加えられています。実行した結果がこちら。

ちなみに前回のバージョン指定と組み合わせられるという事だったので、範囲指定 [>=1.3.0,<3.0.0(1.3~3.0の間の最新版)]も試してみましたが、問題なくできました。

インストールされているパッケージとバージョンに関係する処理
次に、どのパッケージをインストールしてあって、そのバージョンはいくつかを、確認する方法です。
P.4
インストールされているパッケージとバージョンの一覧を確認するには、pip listコマンドを実行します。
実行した結果がこちら。バージョンも表示されています。

このリストには依存パッケージも表示されるので、インストールした覚えのないものも含まれます。
pipコマンドの依存パッケージがsetuptools、sampleprojectの依存パッケージがpeppercornとのこと。
私の場合は他に、openpyxlとreportlabというパッケージを入れています。それ以外に特に入れた記憶はありませんので、他のファイルはその二つの依存パッケージ関連なんだと思います。
- パッケージが最新バージョンではないものを表示したい
さて続いて、最新版ではないパッケージだけを一覧で表示することもできるそう。
P.4
また、「pip list –outdated」(あたは「pip list -o」)と実行すると、最新版ではないパッケージのみが表示されます。すべて最新版の場合は何も表示されません。
実行した結果がこちら。現在入っているバージョンと、最新バージョンを教えてくれます。

- パッケージの詳細情報を知りたい
P.4
個別のパッケージについての詳細を知りたい場合は、「pip show パッケージ名」を実行します。このコマンドでは依存関係にあるほかのパッケージの名前も確認できます。
実行した結果がこちら。

なるほど。開発者への連絡先や、URL、どこにインストールされているかを教えてくれるんですね。
先ほど依存パッケージであると書いたpepperornも書かれていました。
パッケージをアンインストールしたい
P.5
パッケージをアンインストールするには、「pip uninstall パッケージ名」を実行します。
(中略)
デフォルトでは「proceed (y/n)?」という確認メッセージが出力されます。確認メッセージが表示されたら、yキーを入力してからEnterキーを押してアンインストールを進めてください。
–yオプションをつけると、この確認作業をスキップできます。
なお、pip uninstallコマンドは依存関係にあるパッケージのアンインストールは行いません。依存関係にあるパッケージも含めて完全にアンインストールしたい場合は、すべてのパッケージ名を個別にpip uninstallに渡す必要がありますが、venvを使った仮想環境を利用している場合は作業を簡略化できます。
venvについては別の章で説明されるので、一旦横に置いておきます。
というわけで、実行した結果がこちら。

pip listで確認してみると、確かに依存ファイルのpeppercornだけ残ってsampleprojectは消えました。

peppercornは今のところ私にも、残っているパッケージにも不要なものなので、今度はyオプションも使ってpeppercornを削除してみます。

y/nの問いかけなしに、問題なくアンインストールが完了しました。
それではきりが良いので、今回はこちらで終了です。お付き合いいただきありがとうございました。
実践試験について知りたい方は以下をご覧ください。
●Python3エンジニア認定実践試験