kondoumh のブログ

- とあるソフトウェアエンジニアのめったに更新されないブログ -

VS Code の Python 開発環境を整える for macOS and Windows

仕事でちょっと Jupyter Notebook とか触るようになったので、素の Python 開発環境も構築して Python 力高めたいなあということでやってみました。

ちょっと前は何も考えずに Anaconda 入れてしまうレベルだったので、このあたりから読んで心を入れ替えました。

qiita.com

これ読んで Windows でも mac でも苦労なく Jupyter 環境が構築できました。

qiita.com

しかし Trac を触ってた頃から比べると Python のツールチェインも随分様変わりしましたねえ・・。

Python をインストールすると

$ python -m venv <environment directory>

で、venv という OS にインストールされた Python 環境とは隔離された仮想的な Python 環境が手に入ります。仮想といっても VM のようなヘビーなものではなく Python インタープリタやライブラリ環境をフォルダ単位で隔離している程度 (Node.js でいうとプロジェクトの node_modules に node / npm も入っているイメージ) で pyenv とやってることはそんなに変わらなそうです 。ただ、サードパーティではなく Python 標準で提供されているところが正義です。

venv ではターミナルのプロンプトが

(env) $

のように分かりやすい表示になります。

VS Code では、Microsoft 公式の Python 拡張が提供されていますのでインストールします。

marketplace.visualstudio.com

VS Code ではプロジェクト単位(workspace 単位) に設定をカスタマイズできます。Python のプロジェクトディレクトリで、venv を作成します。

$ python -m venv env

プロジェクトの Python ファイルを開くと、Python 拡張が導入されていれば Python 環境を選択するプロンプトが表示されますので venv の Python を選びます。

f:id:kondoumh:20181024221954p:plain

workspace の .vscode/settings.json を直接編集する場合、macOS では次のように python.pythonPath を設定します。

{
    "python.pythonPath": "${workspaceFolder}/env/bin/python"
}

Windows でも同様です。

{
    "python.pythonPath": "${workspaceFolder}\\env\\Scripts\\python.exe",
    "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
}

Windows で統合ターミナルに Git for Windows (MSYS2) の bash を指定していると Python の REPL がうまく動かないし cmd.exe は辛いので PowerShell を指定してます。

f:id:kondoumh:20181024210824p:plain

ステータスバーに Python 環境が ('env': venv) のように表示されていれば OK です。

統合ターミナルで Python 使うには、macOS なら

$ . env /bin/activate 

Windows なら

PS> .\env\Scripts\activate

で起動する必要があります。これがちょっと面倒かな。venv に入って pip install で numpy など必要なパッケージをインストールしていきます。requirements.txt を追加して必要なパッケージとバージョンを管理することもできます。npm init で package.json が作成される Node.js と比べるとツールがこなれてない感ありますが・・。

Python 拡張で色々コマンドが使えます。

f:id:kondoumh:20181024224926p:plain

F5 で普通にデバッグできます。

f:id:kondoumh:20181024225131p:plain

ということで VS Code 上に割と快適っぽい Python 開発環境が構築できました。