※ 2020/4/25 追記
内容を更新した以下の記事を投稿していますので、そちらを参照してください。
Windows + Python + PipEnv + Visual Studio Code でPython開発環境
環境
- Windows 10
- Python version 3.6
- PipEnv version 2018.7.1
Python のインストール
Python公式サイトより、ダウンロード。
ここでは python-3.6.5-amd64.exe を使用しています。
インストーラを実行し、Pythonをインストールします。
注意点は以下です。
- pip のインストールを行うこと(-> 2ページ目 「pip」をチェック)
- Python を環境変数に追加すること(-> 3ページ目 「Add Python to environment variables」をチェック)
PipEnv のインストール
コマンドプロンプトを起動し、以下を実行します。
pip install pipenv
環境変数の追加
デフォルトですと PipEnv はユーザーホーム配下にインストールしたパッケージを格納します。
以下の環境変数を追加することによって、プロジェクトのディレクトリに格納されるようになります。
- PIPENV_VENV_IN_PROJECT : true
VS Code の初期設定
拡張機能
以下の拡張機能をインストールします。
必要な拡張機能がまとめて入っています。
- Python Extension Pack
VS Code の設定
ファイル -> 基本設定 -> 設定 で以下の設定を追加します。
プロジェクトディレクトリ配下の.venvの仮想環境が使用されるようになります。
"python.venvPath": ".venv",
VS Code のプロジェクト作成~実行まで
プロジェクトフォルダの作成 & PipEnv環境作成
適当な場所にプロジェクトディレクトリを作成し、VS Codeで開きます。
表示 -> 統合ターミナル でターミナルを開き、PipEnvコマンドを実行します。
引数は使用する Python のバージョンに合わせて変更してください。
pipenv --python 3.6
実行すると、以下がプロジェクト直下に作成されます。
- .venv
- PipFile
実行構成の追加
VS Code で作成したプロジェクトディレクトリを開き、デバッグタブで「構成の追加」->「Python」を選択します。
すると .vscode/launch.json が作成され、エディターが開きます。
「"name": "Python: Current File"」の箇所に以下のように「"env"」の設定を追加します。
プロジェクトのディレクトリが Pythonパスに追加されます。
{
"name": "Python: Current File",
"env": {
"PYTHONPATH": "${workspaceFolder}"
}
},
実行(&デバッグ)
Pythonソースを作成し、ソースを開いた状態でデバッグタブで「Python: Current File」を選択し、実行します。
実行引数を指定したい場合は .vscode/launch.json に「"args"」の設定を追加します。
{
"name": "Python: Current File",
"args": [
"hoge",
"fuga",
"piyo"
]
},
VS Code でのフォーマッタ、Lint設定
以下、Lint関連の設定方法です。
フォーマッタ(autopep8)
コマンドパレットとかでドキュメントのフォーマットを実行すると、、、
右下にインストールを促すメッセージが出てくるので、「Yes」を押してやると勝手に PipEnv で autopep8 がインストールされます。
autopep8 ではなく、別のフォーマッタを使用したいのであれば、設定(settings.json)に、
"python.formatting.provider": "yapf"
などと追記し、上記同様の手順で設定することができます。
Lint
Lintについても同様で、設定(settings.json)に、
"python.linting.pylintEnabled": true,
"python.linting.flake8Enabled": true,
"python.linting.mypyEnabled": true,
などと追記し、ソースを保存したりすれば、同様に右下にメッセージが出てきます。
.gitignore
/.vscode
/.venv
/.mypy_cache
/Pipfile.lock
/tmp
/**/__pycache__