1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python 3 エンジニア認定実践試験対策 (2) - requirements.txt / constraints.txt

Last updated at Posted at 2024-11-07

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.txtconstraints.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 パッケージバージョンの統一管理 - 確認問題

  1. requirements.txtの主な目的は何ですか?
    a) Pythonのバージョンを管理するためのファイル
    b) 異なる環境で同じパッケージバージョンを使用するためのファイル
    c) プロジェクトのドキュメントを作成するためのファイル
    d) パッケージの依存関係を自動的に解決するためのファイル

  2. requirements.txtを自動で作成するコマンドはどれですか?
    a) pip install requirements.txt
    b) pip freeze > requirements.txt
    c) pip create requirements.txt
    d) pip generate requirements.txt

  3. requirements.txtの書式で、特定のバージョンを指定する場合の正しい記述はどれですか?
    a) foo:1.0.0
    b) foo==1.0.0
    c) foo<1.0.0
    d) foo=1.0.0

  4. constraints.txtの役割は何ですか?
    a) プロジェクトのドキュメントを管理する
    b) requirements.txtで指定したパッケージの依存関係パッケージのバージョンを制限する
    c) Pythonのバージョンを指定する
    d) パッケージのインストールを自動化する

  5. 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

  6. 特定の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の両方

  7. requirements.txtとconstraints.txtのバージョン指定が矛盾した場合、どうなりますか?
    a) インストールが成功する
    b) 警告が表示される
    c) インストールに失敗する
    d) 自動的に最新バージョンがインストールされる

  8. requirements.txtに記載されていないパッケージをconstraints.txtで指定した場合、どうなりますか?
    a) エラーが発生する
    b) 無視される
    c) 自動的にインストールされる
    d) 警告が表示される

解答:

  1. b
  2. b
  3. b
  4. b
  5. c
  6. d
  7. c
  8. b
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?