Help us understand the problem. What is going on with this article?

Windows10のVSCodeでvenvを利用するときの注意点

More than 1 year has passed since last update.

はじめに

Pythonでvenvを使い始めました。
Windows10,VSCode環境下で導入したのですが、
何点が引っかかったポイントがありました。

それぞれの対処法ついては、検索により比較的容易に情報が手に入りますが、
まとまったものはなかったため、メモとして残します。

venvについて

Pythonの仮想動作環境を作成するための、Pythonの標準パッケージです。
これにより、作成したプロジェクトごとに、
pipの導入状態を、独立させ切り替えることができます。

詳細は、以下の記事が詳しいです。
Qiita - venv: Python 仮想環境管理

Windows10環境下では、PowerShellの実行ポリシーを変える

PythonはPowerShell上で動作します。

仮想環境をActivateするためには、
その機能を持つPowerShell Scriptを実行する必要がありますが、
標準では実行できません

これはPowerShellの実行ポリシー(Execution Policy)によるものです。

ポリシーを変え、PowerShell Scriptを実行する方法はいくつかあります。
Qiita - PowerShellのExecutionPolicyのスコープとかについて詳しく

「管理者権限でPowerShellを開き、実行ポリシーをRemoteSignedにする」
がシンプルな方法となります。

具体的には、管理者権限でPowerShellを開いた後、以下を実行します。

Set-ExecutionPolicy RemoteSigned

開いたPowerShellだけ、実行ポリシーを変えることは可能か

可能です。
コマンドラインのみでvenvを利用しているならば、不都合はないと思います。
PowerShellを開いた後、以下のコマンドを実行するだけです。

Set-ExecutionPolicy RemoteSigned -Scope Process

しかし、VSCodeを使用する場合、不都合があります。
・後述する拡張機能には対応していない
・ターミナル起動時に上記コマンドを強制的に実行することはできるが、
それをすると、「ビルドタスクの実行」でPythonを実行できない。

プロジェクトのパス・フォルダー名には日本語を使わない

仮想環境作成時、
ActivateするためのPowerShellスクリプトに、
プロジェクトのフォルダが環境変数として記録されます。

日本語をパス・フォルダ名に含めるとActivationスクリプトの中身が一部文字化けします。
仮想化が正常に機能しないので、日本語の使用を避けます。

VSCodeに入れる拡張機能

venvに必要な拡張機能は、Microsoft公式の「Python」拡張機能です。

Linting, Debugging (multi-threaded, remote), Intellisense, code formatting, refactoring, unit tests, snippets, and more.

VSCodeでのvenv環境使用方法

1.拡張機能インストール後、venv構築環境でVSCodeを開き、
コマンドパレット(CTRL + SHIFT + P)から、以下のコマンドを選択します。
「Python:インタープリターを選択」
ここから、venv環境のインタプリタを選択します。

2.同じくコマンドパレットから選択できる以下のメニューより、
仮想化されたPython環境を利用できます。
・「Python:REPLを開始」
・「Python:ターミナルでPythonファイルを実行」
・「Python:Pythonターミナルで選択範囲/行を実行」

無題.png

Avocado
興味のあることを一つ一つ手を付ける感じです。
https://twitter.com/_Avo_cado
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