#はじめに
venvを使用して開発するときの、VSCodeの設定メモ。自分用です。。
Pythonのインストールまで完了している状態。2.x系と3.x系で情報が混在しててわけわかんなかったので、基本的なところも自分用にメモ。
##環境
Windows 10
Python 3.6.5
Visual Studio Code
#仮想環境の作成と起動
PowershellかCmdを起動し、次のコマンドを実行する。
参考:28.3. venv — 仮想環境の作成(Python公式ドキュメント)
PS C:\Code> python -m venv myvenv
フォルダが作成され、仮想環境が作成されている。
PS C:\Code> Get-ChildItem .\myvenv
ディレクトリ: C:\Code\myvenv
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2018/05/20 14:59 Include
d----- 2018/05/20 14:59 Lib
d----- 2018/05/20 15:00 Scripts
-a---- 2018/05/20 14:59 75 pyvenv.cfg
PS C:\Code>
次のコマンドで仮想環境を起動する。
PS C:\Code> .\myvenv\Scripts\Activate.ps1
(myvenv) PS C:\Code>
プロンプトの頭に(myvenv)
と表示されていれば、仮想環境が起動できている。試しに、pipでインストールされているパッケージを確認する。
(myvenv) PS C:\Code> pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.3)
setuptools (39.0.1)
You are using pip version 9.0.3, however version 10.0.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
(myvenv) PS C:\Code>
pipとsetuptools以外、何にも入っていないことがわかる。おまけにpython -m pip install --upgrade pip
を実行しろと言っているので、素直に実行する。
(myvenv) PS C:\Code> python -m pip install --upgrade pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 9.0.3
Uninstalling pip-9.0.3:
Successfully uninstalled pip-9.0.3
Successfully installed pip-10.0.1
(myvenv) PS C:\Code>
ここまで完了したら、好きなパッケージをインストールして開発を進めればよい。
#VSCodeの設定
ここが本題。
VSCodeのPythonエクステンションのSettingファイルにも設定を記載する箇所があるようだけど、よくわかんねーでした。
結局、仮想環境を起動したプロンプトからVSCodeを起動するという古典的な方法に落ち着きました。これ以外に何か方法ないのかな・・・。
次のファイルをmyvenv
フォルダへ作成して実行すれば、仮想環境の環境変数が引き継がれ、VSCode上のLintやパッケージの導入状態が引き継がれる模様。
Set-Location $PSScriptRoot
.\Scripts\Activate.ps1
& "C:\Program Files\Microsoft VS Code\Code.exe" .\
なお、Powershell V2以前は、$PSScriptRoot
が使えないので、バージョンアップするか、Split-Path $MyInvocation.MyCommand.Path -Parent
にしてください。