
【Python】venvでバージョン指定した仮想環境をLinux上に構築する方法
公開: 更新:LinuxでPythonのバージョン指定したvenv環境を構築する方法
Linuxではvenv
モジュールを使用して、特定バージョンのPythonで仮想環境を構築できます。この方法ではシステムのPythonに影響を与えず、プロジェクトごとに独立した環境の作成が可能です。ベースとなるPythonをフルパスで指定することによって、必要なバージョンの仮想環境をセットアップします。
仮想環境を作成するには、まず使用したいPythonバージョンがインストールされているかどうかを確認します。Ubuntu系では、必要なバージョンのPythonとvenvパッケージをapt
コマンドでインストールします。
#!/bin/bash
/usr/bin/python3.9 -m venv myproject_env
source myproject_env/bin/activate
python --version
詳細説明 | |
---|---|
1行目 | シェルスクリプトの実行環境を指定 |
2行目 | Python 3.9を使用してvenv環境を作成 |
3行目 | 作成した仮想環境をアクティブ化 |
4行目 | 現在のPythonバージョンを確認 |
【PR】『Python』を学べる企業・個人向けのプログラミングコース
venv環境でパッケージのバージョンを指定する方法
venv環境内でパッケージをインストールする際も、バージョン指定子を使用してパッケージの特定バージョンを指定できます。バージョン指定をしない場合はコマンド実行時の最新バージョンが取得されますが、バージョン差異によるエラーを防ぐために、モジュールのバージョンを指定することをお勧めします。
要件ファイル(requirements.txt)を作成して使用することで、複数のパッケージとそのバージョンを一度に管理できます。その結果、環境の再現性が高まり、他の開発者と同じ環境を共有しやすくなります。
#!/bin/bash
echo "numpy==1.21.0
pandas==1.3.5
matplotlib==3.5.1" > requirements.txt
pip install -r requirements.txt
pip install requests==2.28.1
詳細説明 | |
---|---|
1行目 | シェルスクリプトの実行環境を指定 |
3行目 | numpyパッケージをバージョン1.21.0で指定 |
4行目 | pandasパッケージをバージョン1.3.5で指定 |
5行目 | matplotlibパッケージをバージョン3.5.1で指定してファイル作成完了 |
6行目 | 要件ファイルを使用して一括インストールを実行 |
7行目 | 個別にrequestsパッケージをバージョン2.28.1で指定してインストール |
Linuxの既存venv環境でPythonバージョンを変更する方法
venvで作成した仮想環境のPythonバージョンを変更する場合、環境は作成時のローカルバージョンで固定されているため、単純に切り替えることはできません。バージョン変更には--clear
オプションを使用して、仮想環境を一度クリアする必要があります。
この方法では、まずローカル環境のPythonを変更したいバージョンに切り替え、次に既存の仮想環境をクリアします。この操作により仮想環境内のPythonバージョンを更新できますが、以前にインストールしたパッケージはすべて失われるため、再インストールが必要です。
#!/bin/bash
pip freeze > requirements.txt
deactivate
/usr/bin/python3.10 -m venv myproject_env --clear
source myproject_env/bin/activate
pip install -r requirements.txt
詳細説明 | |
---|---|
1行目 | シェルスクリプトの実行環境を指定 |
2行目 | 現在の環境にインストールされているパッケージをrequirements.txtに保存 |
3行目 | アクティブな仮想環境を終了 |
4行目 | Python 3.10を使用して既存の仮想環境をクリアして再作成 |
5行目 | 新しい仮想環境をアクティブ化 |
6行目 | 保存しておいたパッケージリストを使用して再インストール |
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- コマンドプロンプト(cmd)の出し方一覧【Windows】
- 【Python】GUIアプリ開発が向いてない理由と解決策
- 【Python】Windows環境でiOSアプリを開発する方法
- 【Python】リスト(list)からjsonに変換する方法
- 【Python】import osの意味とosモジュールとの違い