Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
45
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Windows + Python + PipEnv + Visual Studio Code でPython開発環境

昔、以下の記事を書きましたが、アップデートで状況が変わっているようなので、
内容を更新して、再投稿します。

Windows + Python 3.6 + PipEnv + Visual Studio Code でPython開発環境

■ 環境

  • Windows 10
  • Python version 3.8.2
  • PipEnv version 2018.11.26

■ Python のインストール

Python公式サイトより、ダウンロード。
ここでは python-3.8.2-amd64.exe を使用しています。

インストーラを実行し、Pythonをインストールします。
注意点は以下です。

  • pip のインストールを行うこと(-> 2ページ目 「pip」をチェック)
  • Python を環境変数に追加すること(-> 3ページ目 「Add Python to environment variables」をチェック)

Python_Install-1.png
Python_Install-2.png
Python_Install-3.png

■ PipEnv のインストール

コマンドプロンプトを起動し、以下を実行します。

PipEnvのインストール
pip install pipenv

● 環境変数の追加

デフォルトですと PipEnv はユーザーホーム配下にインストールしたパッケージを格納します。
以下の環境変数を追加することによって、プロジェクトのディレクトリに格納されるようになります。

  • PIPENV_VENV_IN_PROJECT : true

■ VS Code の初期設定

● 拡張機能

以下の拡張機能を追加します。

  • Python(ms-python.python)

VSCode-PythonExtension.png

● ユーザーの settings.json 設定

activate コマンドが PowerShell ではうまく動作しない場合がある(?)のと、
ワークスペースの設定だとまたまたうまく動作してくれない(?)ようなので、
コマンドプロンプトをデフォルトとするよう、ユーザー設定の settings.json にて以下を追加します。

[ユーザーホーム]\AppData\Roaming\Code\User\settings.json
{
    "terminal.integrated.shell.windows": "C:/WINDOWS/System32/cmd.exe",
}

■ VS Code のプロジェクト作成~実行まで

● プロジェクトフォルダの作成 & PipEnv環境作成

適当なディレクトリを切って、VSCode で開きます。
ここでは「D:\Temp\python-test」としています。

VSCode-OpenVSCode.png

表示 -> 統合ターミナル でターミナルを開き、PipEnvコマンドを実行します。
引数は使用する Python のバージョンに合わせて変更してください。

PipEnv環境作成
pipenv --python 3.8

VSCode-ExecutePipEnv.png

実行すると、以下がプロジェクト直下に作成されます。

  • .venv
  • PipFile

● ワークスペースの settings.json 設定

仮想環境等のパス設定、フォーマッター、Lint の設定を行います。

[ワークスペースフォルダ]\.vscode\settings.json
{
    // 拡張機能のロード時にターミナルでPython環境をアクティブにする。
    "python.terminal.activateEnvInCurrentTerminal": true,
    // 仮想環境のパス。作成した仮想環境を指定する。
    "python.venvPath": "{$workspaceFolder}/.venv",
    "python.autoComplete.extraPaths": [
        "{$workspaceFolder}/.venv/Lib/site-packages",
    ],
    // フォーマッターの設定。autopep8 を指定する。
    "python.formatting.provider": "autopep8",
    "python.jediEnabled": false,
    // Lintの設定。flake8、mypy を有効化する。
    "python.linting.flake8Enabled": true,
    "python.linting.mypyEnabled": true,
    "python.linting.pylintEnabled": false,
    // 以下はお好みで。
    "editor.formatOnSave": true,
    "python.autoComplete.addBrackets": true,
}

● パッケージのインストール

ターミナル上で pipenv コマンドを使用することで作成した仮想環境にパッケージがインストールされます。
コードフォーマット、Lint のため、以下のパッケージをインストールします。
開発環境のみで使用するため、--dev オプションを付けます。

  • autopep8
  • flake8
  • mypy
autopep8、flake8、mypyのインストール
pipenv install autopep8 flake8 mypy --dev

ここでは上記パッケージの他、サンプルソース用に以下を追加しています。

  • numpy
  • matplotlib
numpy、matplotlibのインストール
pipenv install numpy matplotlib

● 実行

適当にPythonソースファイルを作ります。

VSCode-NewSource.png

test.py
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi)
y = np.sin(x)
plt.plot(x, y)
plt.show()

設定がうまくいっていれば、ドキュメントの表示やコード補完、フォーマッター、Lint が効くはずです。

VSCode-ShowDocument.png
VSCode-CodeAssist.png

実行する場合は、「実行」パネルを開いて、
「launch.json ファイルを作成します」→ 「Python File」と選択します。

VSCode-Create-launch.json.png

勝手に .vscode/launch.json が作成され、Python用の実行構成が設定されます。

VSCode-Create-launch.json-3.png

後は、実行対象のソースを開いて、F5キー押下で実行されます。

VSCode-Execute.png

実行引数を指定したい場合は .vscode/launch.json に「"args"」の設定を追加します。

        {
            "name": "Python: Current File",

            "args": [
                "hoge",
                "fuga",
                "piyo"
            ]
        },

■ .gitignore

/.venv
/.mypy_cache
/Pipfile.lock
/tmp
/**/__pycache__
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
45
Help us understand the problem. What are the problem?