こんにちは、吉政創成 菱沼です。
今回もPythonエンジニア育成推進協会のPython 3 エンジニア認定実践試験の主教材「Python実践レシピ/技術評論社」を使って学びたいと思います。
前回はpipコマンドの基本を学びました。今回も引き続き、pipですが、基本から一歩先に入ったところになりそうです。
本番環境と開発環境を同じものにするには?
アプリケーションの開発現場では、開発環境と本番環境を分けたいという要望はよくあることだそうです。環境を分けて開発したい場合、本番環境と開発環境で違う不具合やエラーが発生しないよう、それぞれの環境には同じパッケージ、バージョンをインストールする必要があります。
ここではpipを使って、パッケージなどのバージョンを統一する方法について学びます。
——————————-
P.5
pipではパッケージ名とバージョン番号を指定したテキストファイルを用意することで、バージョンを統一できます。テキストファイルの名前は慣例としてrequirements.txtがよく使われます。
requirements.txtは「pip freeze > requirements.txt」とコマンドを実行して作成します。sampleproject2.0.0がインストールされている環境では、以下の内容のrequirements.txtが作られます。
requirements.txtの作成
$ pip freeze > requirements.txt $ cat requirements.txt peppercorn==0.6 sampleproject==2.0.0 |
——————————-
上記の作業は直接、コマンドプロンプトから書き込んでいますが、requirements.txtをメモ帳やエディタなどで事前に作って、ファイルを参照するようにしてもいいようです。ファイルにはパッケージのインストールの時に学習した、パッケージ名とバージョンの指定方法と同じ書き方で、以下のように書くそうです。(#に続く文章はコメント扱いになります。)
——————————-
P.5
requirements.txtの書き方の例
foo==1.0.0 # 「==」だと指定されたバージョンがインストールされる bar<2.0.0,>=1.2.0 # バージョンの範囲指定もできる baz # バージョン番号を指定しなければ、インストール実行時点での最新版がインストールされる |
——————————-
ということで、コマンドを実行してみました。
テキスト内にある[cat]はLinuxなどのUNIX系OSで標準的に使用されるコマンドで、ファイルの中身の表示などの用途で利用されるようです。Windowsでは[cat]は使えませんが、[type]コマンドで同じことができるようです。実行してみた結果がこちら。
続いて、作成したrequirements.txtを利用してインストールする方法がこちら。
——————————-
P.6
requirements.txtを参照してパッケージをインストールするには、「pip install -r requirements.txt」を実行します。前述の「パッケージのインストール」(P.2)で紹介した「pip install パッケージ名」と同様に、このコマンドもvenvで作った仮想環境上で実行することをお勧めします。
——————————-
venvについては次の章で学ぶことになるのですが、ここでインストールする先が必要になってしまったので取り急ぎ、初venv体験しました。ここでは立ち上げ方法などについでは割愛し、後日、テキストで学びながら書きたいと思います。
さて。ここで、インストールを実行してみることになりますが、実は当初、引用文の通りのコマンドを実行して失敗…。
「ERROR: Could not open requirements file: [Errno 2] No such file or directory: ‘requirements.txt’」というエラーメッセージが表示され、requirements.txtなんて、このディレクトリにはありませんよと怒られました。
よくよく考えればそうだよねと思い至り…そういえば作ったrequirements.txtはどこにあるんだと思えば、作った当時のカレントディレクトリに存在します。なので、私の場合はC:\Users\(ユーザー名)にあることになります。
そこで、新たにつくった環境にrequirements.txtを連れてくるか、そのままのディレクトリに置いたまま、相対パスか絶対パスで指定してあげることでインストールできるようになります。私は相対パスで指定することにしました。
というわけで、実行してみたのがこちら。
補足)ファイルを移動させる方を選びたい方で、コマンドで実行したいという方は、以下のリンクをご参照ください。
mvコマンドでファイル(ディレクトリ)名の変更、移動(macOS、Linux)
ファイルの移動とディレクトリ名の変更(MOVE)(Windows)
成功したということなので、念のため確認。
確かに作成した内容になっていました。
ところで、これはテキストとは関係ない(=試験範囲ではない)のですが、requirements.txtに書かれているパッケージをまとめてアンインストールすることもできるらしいです。
[pip uninstall -r requirements.txt](install を uninstall に変える)
やって見たくてやってみたところ、もともと入っていたpipとsetuptoolsを残して、きっちり消えました。
それではきりが良いので、今回はこちらで終了です。
お付き合いいただきありがとうございました。
実践試験について知りたい方は以下をご覧ください。
●Python3エンジニア認定実践試験
https://www.pythonic-exam.com/exam/jissen