見出し画像

WindowsでPythonの仮想環境の設定 with VScode メモ

もともとAnacondaを入れてたんだけど、もうちょっとシンプルにしたいと思ってpyenvとvenvでPythonの環境の管理をしたいと思った。
移行するのにてこずったのでメモ。
VScodeの設定まで行ったのでそこまで書く。

AnacondaのPath設定は消そう

ユーザーごとの環境変数PathからはAnacondaの設定はすぐ消したのだけど、システム側にもAnacondaのPathを設定していたのでそちらも消さなければならなかった。

Windowsではpyenvはpyenv for Windowsを使う

windowsでは通常のpyenvは使えないのでpyenv for Windowsを使おう。インストールはGithubでREADMEのリンクをたどっていけばわかるが一応ここに乗せる。

Powershellを起動して

Invoke-WebRequest -UseBasicParsing -Uri "<https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1>" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

UnauthorizedAccess errorが出たら

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

このスクリプトでセキュリティを解除できるので、再度インストールスクリプトを実行する。
インストールで来たらshellを再起動する。

次に環境変数を設定する。

[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")

[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")

[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")

コマンドにもPathを通す。

[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

Windows 10 1905以降のバージョンを使ってる場合、Pythonインストーラーのアプリ実行エイリアスを無効化する必要があるかもしれない。

windowsスタートメニュー→設定→アプリ→アプリ実行エイリアス→python.exe,python3.exeのアプリインストーラーをオフにする。

以下を実行してバージョンが出れば問題ない。

pyenv —version

VScodeの設定

venvで仮想環境を作ったら起動時にターミナルで自動的にアクティベイトしてくれるように設定する。

まずVScodeを開いてFile→Preferencesを開く。上部に検索バーがあるのでpythonを検索。
Conda Pathを設定している場合は消去する。
次にpython envで検索。検索結果にTerminal:Active Enviromentという項目があるのでTrueにする。

そして実際の作業フォルダでvenvで仮想環境を作ったら、envフォルダがあるフォルダと同じ階層でF1キーを押してコマンドパレットを起動し、settingsで絞ってopen workspace setting(JSON)コマンドを実行してsettings.jsonファイルを作る。ファイル内に

{
    "python.defaultInterpreterPath": "env\\Scripts\\python.exe"
  }

と書く。

以上でVScodeで作業フォルダを開いた場合にvenvで作った環境をアクティブにしてくれる設定は完了だ。

この記事が気に入ったらサポートをしてみませんか?