Pythonを数年使ってきて、改めて知識の整理と最新仕様のキャッチアップのために Python 3 エンジニア認定実践試験を受験しようと思い、私的に作成した資料から簡易版を作成しました。
最後に練習問題を設けましたので、解説を読んだら記憶定着のために練習問題へチャレンジしてください。最後に答えを掲載しています。
Python パッケージバージョンの統一管理
1. requirements.txtとは?
requirements.txt
は、異なる環境(開発環境や本番環境など)で同じパッケージバージョンに統一するために使用するファイルです。
- 環境ごとに異なるバージョンを使うと、不具合が発生することがあります
- このファイルを使うことで、パッケージのバージョンを統一できます
2. requirements.txtの作成
自動作成
pip freeze > requirements.txt # 現在の環境のパッケージとバージョンを一覧にしたファイルを作成
3. requirements.txtの書式
- コメントは
#
で始まる行です。 - 例:
foo==1.0.0 # 特定のバージョンを指定 bar<2.0.0,>=1.2.0 # バージョンの範囲を指定
- バージョンを指定しない場合、最新バージョンがインストールされます。
4. requirements.txtを使ったインストール
pip install -r requirements.txt # requirements.txtに記載されたパッケージをインストール
5. constraints.txtとは?
constraints.txt
は、requirements.txt
で指定したパッケージと依存関係にあるパッケージが自動的にインストールされる際のバージョンを強制的に指定するためのファイルです。
複数のプロジェクトで異なるバージョンの依存関係が衝突するのを防ぎます。
6. constraints.txtの書式
- 書き方は
requirements.txt
と同じです。 - 例:
python-pypypy==3.0.0 # 特定のバージョンを指定
7. constraints.txtを使ったインストール
pip install -r requirements.txt -c constraints.txt # 両方のファイルを指定してインストール
-
constraints.txt
に指定するパッケージ名は、requirements.txt
にも書かれている必要があります。 -
requirements.txt
にはパッケージ名だけを記述し、constraints.txt
にはパッケージ名とバージョンを記載しておく必要があります。
8. バージョンの制約
-
requirements.txt
とconstraints.txt
の両方にバージョンを指定してしまってもエラー - にはなりませんが、バージョン指定が矛盾するとインストールに失敗します。
- 例:
requirements.txt: psycopg2-binary<2.9.1 constraints.txt: psycopg2-binary==2.9.1
9. 別のPythonに紐づくpipを指定して使う方法
pipとpythonの対応を確認
pip -V # 現在のpipのバージョンと関連付けられているPythonバージョンを確認
特定のPythonバージョンのpipを指定して使う
-
方法1: バージョン番号をつけた
pip
を使用する。pip3.9 install パッケージ名 # Python 3.9用のpipを使用
-
方法2: バージョン番号をつけた
python
コマンドを使う。python3.9 -m pip install パッケージ名 # Python 3.9のpipを使用
Python パッケージバージョンの統一管理 - 確認問題
-
requirements.txtの主な目的は何ですか?
a) Pythonのバージョンを管理するためのファイル
b) 異なる環境で同じパッケージバージョンを使用するためのファイル
c) プロジェクトのドキュメントを作成するためのファイル
d) パッケージの依存関係を自動的に解決するためのファイル -
requirements.txtを自動で作成するコマンドはどれですか?
a)pip install requirements.txt
b)pip freeze > requirements.txt
c)pip create requirements.txt
d)pip generate requirements.txt
-
requirements.txtの書式で、特定のバージョンを指定する場合の正しい記述はどれですか?
a)foo:1.0.0
b)foo==1.0.0
c)foo<1.0.0
d)foo=1.0.0
-
constraints.txtの役割は何ですか?
a) プロジェクトのドキュメントを管理する
b) requirements.txtで指定したパッケージの依存関係パッケージのバージョンを制限する
c) Pythonのバージョンを指定する
d) パッケージのインストールを自動化する -
constraints.txtを使ったインストールのコマンドはどれですか?
a)pip install -r requirements.txt
b)pip install -c constraints.txt
c)pip install -r requirements.txt -c constraints.txt
d)pip install constraints.txt
-
特定のPythonバージョンのpipを使用する方法として正しいものはどれですか?
a)pip3.9 install <package_name>
b)python -m pip3.9 install <package_name>
c)python3.9 -m pip install <package_name>
d) aとcの両方 -
requirements.txtとconstraints.txtのバージョン指定が矛盾した場合、どうなりますか?
a) インストールが成功する
b) 警告が表示される
c) インストールに失敗する
d) 自動的に最新バージョンがインストールされる -
requirements.txtに記載されていないパッケージをconstraints.txtで指定した場合、どうなりますか?
a) エラーが発生する
b) 無視される
c) 自動的にインストールされる
d) 警告が表示される
解答:
- b
- b
- b
- b
- c
- d
- c
- b