はじめに
古いバージョンで構築されたシステムを新しいバージョンで構築しなおす、なんて話は割とよくある話だと思います。
しかも稼働環境はLinuxだけど、開発環境はWindowsなんてこともよくある話。
今回は私が実際に採用した方法についてメモを残したいと思います。
環境
- OS:Windows 10 Pro
- エディタ:Visual Studio Code
実現方法
pyenvでバージョンの切り替えを行い、venvで仮想環境を構築します。
仕事で使うということから、なるべく実績がありかつ可能な限り標準搭載の機能で実現できるということを重視しました。
前提
pyenvのセットアップにpipを使うので、とりあえずPythonの最新バージョンをインストールしておきます。(執筆時点の最新バージョンは3.9.5)
pyenvのセットアップ
インストール
Powershellの場合は以下を実行します。
pip install pyenv-win --target $HOME\\.pyenv
コマンドプロンプトの場合は以下を実行します。
pip install pyenv-win --target %USERPROFILE%\.pyenv
上記のいずれかを実行するとHOMEディレクトリ(通常 C:\Users{ユーザー名})に.pyenv
というフォルダが作成され、そこにインストールされます。
上記以外にもpyenv-winの公式にはZipファイルやGitからインストールする方法が載っていますが、おそらく上記が一番手軽で確実かと思います。
環境変数の追加
pyenvコマンドをどこからでも実行できるように、環境変数にパスを追加します。パスを通すってやつです。
Powershellを開いて、以下を3つのコマンドを実行します。
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
Powershellの再起動
設定した環境変数を有効化するため、Powershellを再起動します。
確認
立ち上げなおしたPowershellで以下を実行します。
pyenv --version
pyenvのバージョンが表示されれば成功です(執筆時点では2.64.7.2)
目的のバージョンをインストール
Powershellで以下を実行すると、今現在pyenvで管理できるバージョンの一覧が表示されます。
pyenv install -l
私の場合は3.7.4と3.9.4が必要なので、以下の通り実行します。
pyenv install 3.7.4
pyenv install 3.9.4
インストールされているバージョンを確認
Powershellで以下を実行すると、pyenvで切り替えられるバージョンの一覧を確認できます(実行ファイルでインストールしたバージョンとは異なります)
pyenv versions
私の環境では以下の通り表示されます。
3.7.4
3.9.4
環境設定
Powershellで以下の通り実行すると、デフォルトのバージョンを設定することができます。
pyenv global 3.9.4
この段階でもう一度 pyenv versions
を実行すると、以下のように表示されます。
3.7.4
* 3.9.4 (set by C:\Users\{ユーザー名}\.pyenv\pyenv-win\version)
これでひとまずバージョンを切り替える環境が整いました。
Visual Studio Codeでのバージョン切り替え
Visual Studio Codeを立ち上げPython開発用のワークスペースを開きます。通常のPython環境であれば、画面左下のステータスバーに Python 3.9.5 64-bit
のように表示されていると思います。この例では現在の環境の(実行ファイルでインストールした)バージョンが表示されています。これをpyenvでインストールしたバージョンと自由に切り替えることができます。
バージョン切り替えは上記のステータスバーに表示されている Python 3.9.5 64-bit
をクリックします。すると画面上部にインタープリターを切り替えることができるドロップダウンが表示され、ここにpyenvでインストールしたバージョンが選択肢として表示されます。
venvのセットアップ
構築する仮想環境のバージョンに切り替える
ワークスペースを開いた状態で、使いたいPythonのバージョンに切り替えます。
その後「ターミナル」メニューの「新しいターミナル」を選択すると、ターミナルウィンドが開きます。
ここで以下のコマンドを実行して、現在のバージョンを念のため確認します。
python -V
仮想環境を生成する
開いているターミナルで以下のコマンドを実行すると、仮想環境を構築できます。
python -m venv .venv
最後の .venv
は生成される仮想環境名(=フォルダ名)になります。任意ですが、.venv
とするのが一般的のようです。
バージョンを明確にするため、.venv39
とかにしても良いかもしれません。
生成が完了したら以下のコマンド実行して、仮想環境を有効化します。
.\.venv\Scripts\activate
.venv
の部分は先ほどのフォルダ名ですので、ご自身で入力した値に読み替えてください。
以上で仮想環境が構築されましたが、Visual Studio Codeに反映させるために、一度Visual Studio Codeを再起動してください。
ワークスペースに反映する
再起動後にステータスバーのPythonバージョン表示箇所をクリックしてインタープリター選択状態にすると、作成した仮想環境が選択肢に出ていると思のでそれを選択します。
すろとステータスバーのバージョン表示にも仮想環境を表す venv
が表示されていると思います。
おわりに
以上で構築完了です。
ちなみに新しい仮想環境にはモジュールは入っていません。
仮想環境ではない通常の環境でインストールしていても、仮想環境はクリーンな状態ですので、改めてインストールする必要があります。
まぁそれが狙いでもあるんですが。
またモジュールを管理する pip
自体も古いバージョンのものが入りますので、必要に応じて(アップデートを促されたら)バージョンアップしましょう。
ではよいPythonistaライフを!!