今回は異なるバージョンのPythonを1つの環境下で共存させる方法を紹介したいと思います。複数のPythonを使った開発案件を掛け持ちすると、Pythonのバージョンが異なるといったことはよくあります。今回は、案件毎に異なるバージョンのPythonの開発を行う時に、どのように異なるバージョンのPythonを共存させるかを紹介したいと思います。
- VENVを使った複数バージョンのPythonを共存
- 仮想環境下でのpip installエラーとその対策
結論
結論を先にお伝えするとVENVというモジュールを使い、仮想環境を構築して、異なるバージョンのPythonを共存させます。
VENVとは
VENVは、Pythonの仮想環境作るためのモジュールになります。仮想環境といっても、簡易的なもので、設定や構築は非常に簡単です。この記事でも構築手順を後述しています。VENVはインストール済みで、現在使われているPythonの上に構築されます。その上で、現在使われているPythonは分離させて、ライブラリを扱うことを可能にしてくれます。
VENVの設定手順
実行環境
今回の環境と共存させるPythonのバージョンは以下になります。
- Windows10
- Python3.11
- Python3.9
仮想環境構築手順
環境構築の前に、インストール済みのPythonがどれかを確認します。 コマンドプロンプトで、「py --list-paths」と入力することでそれぞのバージョンとインストール先がわかります。
py --list-paths
実行結果
仮想環境を作成
続いて仮想環境で実行させたいPythonのバージョンを指定してvenvを作成します。 コマンドは以下の通り、「py -3.9 -m venv (任意のパス)/venv_py39」すると、指定したパスにvenv_39というフォルダーが作成されます。
py -3.9 -m venv (任意のパス)/venv_py39
実行結果
作成したVENV環境のディレクトリ
作成した仮想環境にアタッチ(起動)
続いて、作成したVenvディレクトリのScript配下にある、「activate」を実行し仮想環境を起動します。activate実行すると、冒頭に作成したVevnディレクトリがカッコ書きで表示されます。
(任意のパス)\venv_py39\Scripts\activate
起動後の画面
仮想環境をデタッチ(停止)する
仮想環境を停止し、抜ける場合は「deactivate」を実行し、仮想環境を停止します。
deactivate
実行結果
仮想環境の構築と手順は以上になります。
環境構築後におこった問題
私はこの後、この仮想環境にライブラリをいくつかインストールしようとしたところ、エラーが発生しました。この記事では、そのエラーと解消方法についても紹介をします。
ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
仮想環境にアタッチした状態で、ユーザーインストール(pipinstall --user)を実施すると、上記のエラーになりました。
ユーザーインストールとは?
少し、余談になりますが、pipinstallを行う際に 「--user」と入力するとユーザーインストールになります。このオプションはインストール先を管理者権限が必要のない場所に、指定したシステムパッケージをインストールします。
解消方法
仮想環境にアタッチされている状態での、パッケージ追加をする場合は、 「(任意のパス)/venv_py39pyvenv.cfg」 を確認します。このファイルの中にある以下のFalse部分をTrueに変更します。
include-system-site-packages = False
↓
include-system-site-packages = True
この記述の値はデフォルトが、Falseになっている。これは仮想環境にパッケージを追加しないという設定になります。今回のエラーは、「仮想環境上に入れようとしたパッケージが、仮想環境で参照できない」というエラーで、この設定をTrueに変更することで解消できました。
これで、1つのマシン上に複数のPython環境を構築が完了です。
まとめ
今回は、異なるバージョンのPythonを1つの環境下で共存させる方法を紹介しました。手順としては比較的簡単ですが、設定部分や仕組みは奥が深く、しっかり理解して使いたいと感じます。今後も、案件によって違うバージョンのPythonを使う機会は多いと思います。しっかりと理解をして、次につなげていければと思います。