VSCodeの仮想環境内でPythonインタープリタのバージョンを変更する方法

Python

これがわからなくて昨日一日中ハマってた。知ってる人には常識かもしれないが備忘録代わりに書いておく。

OSはWindows10。

VSCodeのバージョンは1.67.1。

対処方法

結論から書くと作った仮想環境フォルダ内にpyvenv.cfgがあるので、そこで使いたいバージョンを指定するだけ。

ただ3.5などかなり古いバージョンに変えるとpipの再インストールが必要になったり、すでに入れたライブラリが認識しなかったりと不都合が発生した。変更はバックアップを取るなど以前の状態に戻せるようにしてからおこなうのが良いと思う。

以下手順を見ていく。

VSCodeの仮想環境でPythonのバージョン設定

仮想環境フォルダにある「pyvenv.cfg」をクリックして開くと、ファイルの中身は画像のようになっている。

1行目が仮想環境内で使用するPython.exeが格納されたフォルダのパス。画像だと「3.10.4」フォルダの中にPython.exeがある。

2行目はシステムのsite-packagesを使うかどうか。

3行目は使用するPythonのバージョン

使いたいPythonのバージョンが入ったフォルダのパスを1行目に、3行目にPythonのバージョンを指定すれば完了。

確認

まず、現在の仮想環境のPythonバージョンがpyvenv.cfg通りであるか「python -V」コマンドで確認

次にpyvenv.cfgの内容を変更。すでにインストールしてあるpython3.6.4のフォルダ指定と3行目のバージョンを指定する。

python -Vコマンドで確認。

無事に切り替わっていることを確認できた。

これで任意のPythonバージョンで仮想環境を構築できる。やったー。

補足説明

Pythonのバージョン管理に便利なpyenv

今回いろいろやったおかげでpyenvを知った。コマンドラインベースのシンプルな Python のバージョン管理ツール。コマンドラインひとつで指定したバージョンのpythonを指定フォルダにインストールしてくれたり、ダウンロード可能なバージョン一覧取得、バージョンの切り替えなど便利なコマンドラインがある。

インストール方法や使い方は次の記事を参考にした。

Windows環境でのpyenv-winのインストール方法について詳しく解説されている。

【pyenv-win】pyenv のインストールと実行 - Qiita
pyenv-win: Windows 用の pyenv (記事中の引用はすべて上記ページの README.md から) 環境 Microsoft Windows 10.0.19042.1165 PowerShell 5....

ただPythonバージョン3.5.3未満はダウンロードできなかった。この記事によるとUbuntuではOpenSSLのバージョンを変えることで解決できるらしい。私はWindowsなのでよくわからなかった。一応OpenSSLを入れてみたりもしたけど解決できなかった。

なので、Python公式から3.5.3未満のバージョンをダウンロードしてpyenv-winフォルダのversionsの中にインストールすればpyenvに認識されるようになる。

これでうまくいったので古いバージョンにはこれで代用できると思う。

コマンドパレットで指定するインタプリタは?

入門のネット記事にはコマンドパレットからインタプリタを指定すると書いてあって、これで仮想環境内のPythonも自動的に切り替わるのかと思ったのだが、Python -Vで確認してもバージョンは元のままで混乱した。

どうやらコマンドパレットから指定してVSCodeの右下に表示されるPythonのバージョンは、Pythonの御作法的によろしくないところやシンタックスエラーの赤線の表示、コード自動整形などのコード解析に使うもののようだ。

実際にコード実行時に動くPythonはpyvenv.cfgで指定するみたいだ。

コメント

タイトルとURLをコピーしました