AI資格ドリル
資格を選ぶ

Python3エンジニア認定基礎試験 第12章 仮想環境とパッケージ 予想問題と解説

Python3エンジニア認定基礎試験「第12章 仮想環境とパッケージ」の予想問題を10問収録しています。各問を解説つきで掲載し、全問は演習画面で解けます。出題は公式シラバスの範囲内です。

この章の要点

仮想環境の作成と役割、pipによるパッケージのインストール、pipによるパッケージの更新・削除、インストール済みパッケージの一覧とrequirements.txt、仮想環境ディレクトリの慣習と無効化、仮想環境の定義と競合の解決などを扱う分野です。全10問(基礎6問・標準3問・応用1問)を収録しています。

  • 仮想環境の作成と役割
  • pipによるパッケージのインストール
  • pipによるパッケージの更新・削除
  • インストール済みパッケージの一覧とrequirements.txt
  • 仮想環境ディレクトリの慣習と無効化
  • 仮想環境の定義と競合の解決
  • venvが作るPythonのバージョン
  • 仮想環境の有効化
  • PYTHONPATHとの関係
  • 同じinstallコマンドの再実行

情報源と編集区分

公式範囲を確認し、問題数・難易度・確認点は当サイトが集計・編集。

試験概要(公式)

確認しておきたいポイント

当サイトの作問時に観察した、取り違えやすい論点です(公式の統計ではありません)。

  • ソースファイルの保存場所を分けるだけで依存パッケージも分離できると思うこと。同じパッケージの異なるバージョンが必要なら、venvでアプリケーションごとに別の仮想環境を作る。

よくある質問

Q第12章 仮想環境とパッケージは何問収録されていますか?

A

現在10問を収録しています。内訳は基礎6問・標準3問・応用1問です。

Q第12章 仮想環境とパッケージの頻出論点は何ですか?

A

仮想環境の作成と役割、pipによるパッケージのインストール、pipによるパッケージの更新・削除、インストール済みパッケージの一覧とrequirements.txt、仮想環境ディレクトリの慣習と無効化、仮想環境の定義と競合の解決などが出題対象です(当サイト収録問題に基づく編集部集計)。

Q間違えた問題はどう復習すればいいですか?

A

誤答した選択肢のどこがずれていたかを解説で確認し、関連用語がある場合は用語集で定義に戻ってから再演習することをおすすめします。

第1問 ・ 仮想環境の作成と役割

同じPC上のアプリAはあるパッケージのバージョン1を、アプリBは互換性のないバージョン2を必要としている。公式チュートリアルに沿う解決方法はどれか。

  • アシステム全体のパッケージを起動のたびに削除し、必要なバージョンへ入れ替える
  • イ1つの仮想環境に同じパッケージのバージョン1と2を同じ名前で同時にインストールする
  • ウアプリごとに別の仮想環境を作り、それぞれが必要なバージョンをインストールする
  • エアプリのソースファイルだけを別フォルダへコピーし、パッケージはシステム全体で共有する
答えと解説を見る
ウアプリごとに別の仮想環境を作り、それぞれが必要なバージョンをインストールする正解
解説

正解は「アプリごとに別の仮想環境を作り、それぞれが必要なバージョンをインストールする」である。公式チュートリアルは、アプリケーションごとに別々の仮想環境を作ることで、同じパッケージの異なるバージョンを必要とする競合を解決できると説明している。仮想環境はpython -m venv tutorial-envのようにvenvモジュールで作成でき、有効化した後にpythonを実行するとその環境のPythonインタプリタが使われる。システム全体のパッケージを毎回入れ替える方法は、別のアプリケーションへ影響し、依存関係を分離できない。1つの環境で同じパッケージ名の互換性のない複数バージョンを通常の形で同時利用するという解決でもない。ソースファイルの保存場所だけを分けても、共有するパッケージ環境のバージョン競合は解消しない。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 第12章 仮想環境とパッケージ)

問題番号: py3b-046
問題番号 py3b-046 の誤りを報告する
第2問 ・ pipによるパッケージのインストール

仮想環境へrequestsパッケージのバージョン2.6.0だけをピンポイントで指定してインストールしたい。公式チュートリアルのpipの説明に合うコマンドはどれか。

  • アpython -m pip install requests --version 2.6.0
  • イpython -m pip requests install 2.6.0
  • ウpython -m pip install requests(2.6.0)
  • エpython -m pip install requests==2.6.0
答えと解説を見る
エpython -m pip install requests==2.6.0正解
解説

正解は「python -m pip install requests==2.6.0」である。公式チュートリアルは、pipと呼ばれるプログラムでパッケージをインストール・アップグレード・削除でき、デフォルトではPython Package Index (PyPI) からパッケージをインストールすると説明している。そのうえで、パッケージ名の後ろに==とバージョン番号を付けることで、特定のバージョンのパッケージをインストールできると説明している。バージョン指定の構文は==という決まった記号を使う形式であり、--versionオプションや括弧で囲む形式は公式チュートリアルに示されていない。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 第12章 仮想環境とパッケージ)

問題番号: py3b-071
問題番号 py3b-071 の誤りを報告する
第3問 ・ pipによるパッケージの更新・削除

現在インストール済みのrequestsパッケージを、公開されている最新バージョンへ更新したい。公式チュートリアルのpipの説明に合うコマンドはどれか。

  • アpython -m pip show requests
  • イpython -m pip install --upgrade requests
  • ウpython -m pip uninstall requests
  • エpython -m pip list requests
答えと解説を見る
イpython -m pip install --upgrade requests正解
解説

正解は「python -m pip install --upgrade requests」である。公式チュートリアルは、pipと呼ばれるプログラムでパッケージをインストール・アップグレード・削除できると説明したうえで、この形式でパッケージを最新バージョンへアップグレードできると説明している。python -m pip showは指定されたパッケージの情報を表示するだけで更新は行わない。python -m pip uninstallはパッケージを削除するコマンドであり、python -m pip listはインストール済みパッケージの一覧を表示するコマンドで、いずれも最新版への更新そのものを行う操作ではない。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 第12章 仮想環境とパッケージ)

問題番号: py3b-072
問題番号 py3b-072 の誤りを報告する
第4問 ・ インストール済みパッケージの一覧とrequirements.txt

ある仮想環境にインストールされているパッケージの一覧を、別の環境でも同じバージョンで再現できる形式のファイルとして書き出したい。公式チュートリアルのpipの説明に合う方法はどれか。

  • アpython -m pip list > requirements.txtを実行し、そのファイルをpip install -rで読み込む
  • イpython -m pip show > requirements.txtを実行し、そのファイルをpip installへ直接渡す
  • ウpython -m pip freeze > requirements.txtを実行し、そのファイルをpython -m pip install -r requirements.txtで読み込む
  • エrequirements.txtはpipが自動生成するファイルではなく、手作業で一から作成する必要がある
答えと解説を見る
ウpython -m pip freeze > requirements.txtを実行し、そのファイルをpython -m pip install -r requirements.txtで読み込む正解
解説

正解は「python -m pip freeze > requirements.txtを実行し、そのファイルをpython -m pip install -r requirements.txtで読み込む」である。公式チュートリアルは、python -m pip freezeがインストールされたパッケージ一覧をpython -m pip installが解釈するフォーマットで生成し、一般的な慣習としてこのリストをrequirements.txtというファイルに保存すると説明している。また、python -m pip install -r requirements.txtの形式で、必要なパッケージをファイルからまとめてインストールできると説明している。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 第12章 仮想環境とパッケージ)

問題番号: py3b-073
問題番号 py3b-073 の誤りを報告する
第5問 ・ 仮想環境ディレクトリの慣習と無効化

仮想環境用のディレクトリ名を、シェルの一覧表示で邪魔にならないよう選び、作業を終えたら仮想環境から抜けたい。公式チュートリアルの説明に合う組み合わせはどれか。

  • アディレクトリ名にvenv-workspaceを使い、抜けるときはactivateをもう一度実行する
  • イディレクトリ名にtutorial-envを使い、抜けるときはpythonコマンドを終了するだけでよい
  • ウディレクトリ名は何でもよく、抜けるにはターミナルそのものを閉じる必要がある
  • エディレクトリ名に.venvを使い、抜けるときはdeactivateを実行する
答えと解説を見る
エディレクトリ名に.venvを使い、抜けるときはdeactivateを実行する正解
解説

正解は「ディレクトリ名に.venvを使い、抜けるときはdeactivateを実行する」である。公式チュートリアルは、仮想環境の一般的なディレクトリの場所は.venvであり、この名前は通常シェルで隠されているため邪魔にならないと説明している。また、仮想環境の利用を終えるにはdeactivateコマンドを使うと説明している。活性化(activate)と非活性化(deactivate)は対になる操作であり、抜けるときに再びactivateを実行しても仮想環境からは抜けられない。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 第12章 仮想環境とパッケージ)

問題番号: py3b-074
問題番号 py3b-074 の誤りを報告する
第6問 ・ 仮想環境の定義と競合の解決

公式チュートリアルが説明する「仮想環境」の定義として合うものはどれか。

  • ア特定のバージョンのPythonと幾つかの追加パッケージを含んだPythonインストールを構成するディレクトリ
  • イアプリケーションのソースファイルだけを集めて他のフォルダから隠すためのディレクトリ
  • ウPythonの実行を仮想マシン上へ移し、パッケージの管理をOS全体で一括して行う仕組み
  • エ標準ライブラリのモジュールを複製し、元のモジュールと自動で同期し続けるコピー
答えと解説を見る
ア特定のバージョンのPythonと幾つかの追加パッケージを含んだPythonインストールを構成するディレクトリ正解
解説

正解は「特定のバージョンのPythonと幾つかの追加パッケージを含んだPythonインストールを構成するディレクトリ」である。公式チュートリアル12.1は、1つのインストールされたPythonが全てのアプリケーションの要求に対応することはできないため、解決策として仮想環境を作ると説明し、仮想環境を特定のバージョンのPythonと幾つかの追加パッケージを含んだPythonインストールを構成するディレクトリと定義している。アプリケーションAとBが別々の仮想環境を持てば、Bがライブラリのバージョンを更新してもAには影響しない。ソースファイルを隠すだけのディレクトリではなく、Pythonとパッケージの組を分離する単位である。仮想マシンやOS全体のパッケージ管理とは別の仕組みで、標準ライブラリの自動同期コピーでもない。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 12.1 はじめに)

問題番号: py3b-165
問題番号 py3b-165 の誤りを報告する
第7問 ・ venvが作るPythonのバージョン

python3.12 -m venv tutorial-env を実行して仮想環境を作ったとき、その仮想環境にインストールされるPythonのバージョンについて、公式チュートリアルの説明に合うものはどれか。

  • アシステムにインストールされている最新のPythonのバージョンが自動で選ばれる
  • イコマンドを実行したPythonのバージョンである3.12がインストールされる
  • ウ常にvenvモジュールの初版が作られた時点のPythonのバージョンになる
  • エバージョンは指定できず、有効化したときに初めて決まる
答えと解説を見る
イコマンドを実行したPythonのバージョンである3.12がインストールされる正解
解説

正解は「コマンドを実行したPythonのバージョンである3.12がインストールされる」である。公式チュートリアル12.2は、venvがコマンドを実行したPythonのバージョン(--versionオプションで表示されるもの)をインストールすると説明し、例としてpython3.12でコマンドを実行するとバージョン3.12がインストールされると述べている。つまり、どのPythonでvenvを起動するかが仮想環境のPythonのバージョンを決める。システムの最新版が自動で選ばれるわけではなく、venvの初版時点のバージョンに固定されることもない。有効化の時点で決まるのでもなく、作成時に使ったインタプリタで決まる。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 12.2 仮想環境の作成)

問題番号: py3b-166
問題番号 py3b-166 の誤りを報告する
第8問 ・ 仮想環境の有効化

UnixやMac OSで、tutorial-envという名前で作った仮想環境を有効化するときの記述として、公式チュートリアルに合うものはどれか。

  • アpython tutorial-env/bin/install
  • イtutorial-env\Scripts\activate
  • ウpip activate tutorial-env
  • エsource tutorial-env/bin/activate
答えと解説を見る
エsource tutorial-env/bin/activate正解
解説

正解は「source tutorial-env/bin/activate」である。公式チュートリアル12.2は、仮想環境を作ったら有効化する必要があるとし、Unix・Mac OSではsource tutorial-env/bin/activate、Windowsではtutorial-env\Scripts\activateを実行すると示している。このスクリプトはbash shellで書かれており、cshやfishを使う場合はactivate.cshとactivate.fishを使える。有効化するとシェルのプロンプトに仮想環境名が表示され、pythonを実行するとその仮想環境のPythonが起動する。tutorial-env\Scripts\activateはWindows用で、python ... installやpip activateという形の有効化コマンドは示されていない。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 12.2 仮想環境の作成)

問題番号: py3b-167
問題番号 py3b-167 の誤りを報告する
第9問 ・ PYTHONPATHとの関係

仮想環境を有効化してもPYTHONPATH変数は変更されない。この点について、公式チュートリアルが述べているベストプラクティスとして合うものはどれか。

  • アPYTHONPATHに仮想環境のPythonと互換性のないコードへの参照が含まれると予期しない結果になり得るため、bashなどでPYTHONPATHを未設定にするのが最善である
  • イ有効化が自動でPYTHONPATHを書き換えるので、利用者は何も気にしなくてよい
  • ウPYTHONPATHには仮想環境の外のすべてのパッケージの場所を必ず登録しておくべきである
  • エPYTHONPATHを変更できないため、仮想環境は環境変数を使う環境では利用できない
答えと解説を見る
アPYTHONPATHに仮想環境のPythonと互換性のないコードへの参照が含まれると予期しない結果になり得るため、bashなどでPYTHONPATHを未設定にするのが最善である正解
解説

正解は「PYTHONPATHに仮想環境のPythonと互換性のないコードへの参照が含まれると予期しない結果になり得るため、bashなどでPYTHONPATHを未設定にするのが最善である」である。公式チュートリアル12.2は、有効化した仮想環境がPYTHONPATH変数をいかなる形でも変更しないと注意し、パスに仮想環境が使うPythonのバージョンと互換性のないコードへの参照があると予期しない結果になる可能性があると述べている。最善の方法は、bashではPYTHONPATHを未設定にする(使っているシェルに相当する操作を行う)ことである。有効化がPYTHONPATHを書き換えるという理解は誤りで、外部の場所を必ず登録するという推奨もない。環境変数が使えなくなるわけでもない。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 12.2 仮想環境の作成)

問題番号: py3b-168
問題番号 py3b-168 の誤りを報告する
第10問 ・ 同じinstallコマンドの再実行

仮想環境で python -m pip install requests==2.6.0 を実行して成功した後、同じコマンドをもう一度実行した。公式チュートリアルの説明に合う結果はどれか。

  • ア同じバージョンをもう一度ダウンロードして、毎回上書きインストールする
  • イ既存のパッケージを自動でアンインストールしてから新規に入れ直す
  • ウ要求されたバージョンはインストール済みだと表示し、何もしない
  • エ重複を理由にエラーで終了し、--forceを付けないと実行できない
答えと解説を見る
ウ要求されたバージョンはインストール済みだと表示し、何もしない正解
解説

正解は「要求されたバージョンはインストール済みだと表示し、何もしない」である。公式チュートリアル12.3は、同じコマンドを再び実行した場合、pipは要求されたバージョンがインストール済みだと表示して何もしないと説明している。別のバージョン番号を指定すればそのバージョンをインストールし、python -m pip install --upgradeを実行すればそのパッケージを最新版に更新する。つまり、同じバージョンの再実行で上書きや入れ直しは起きない。重複エラーで終了するという説明や、--forceが必須になるという説明もない。更新したいときは別のバージョン指定か--upgradeを使う。

https://docs.python.org/ja/3/tutorial/venv.html (Python公式チュートリアル 12.3 pip を使ったパッケージ管理)

問題番号: py3b-169
問題番号 py3b-169 の誤りを報告する

執筆: AI資格ドリル編集部(運営者情報を見る)