【VSCode tips】統合ターミナル開始時に Python 仮想環境(venv) に入る【#2】
統合ターミナル開始時に Python 仮想環境(venv) に入る
ゴール
統合ターミナル(Ctl + Shift + ‘)を開いたときに、activate
コマンドを自動実行する
環境
- Visual Studio Code
- Python 3 or 2
- virtualenv or venv
- Pythonプラグイン(Microsoft)
Python 仮想環境を用意する
これができる人が対象なので、詳しくは説明しない。
# venvを使う場合
$ python -m venv envs
# virtualenvを使う場合
$ virtualenv envs
なお、Pythonのプラグインは仮想環境が入ったディレクトリの名前を envs
にしておくと、
VSCode側は実行ファイルのパスなど、仮想環境を認識してくれるようである。
シェル起動時にスクリプトを自動実行する方法を調べる
ここでシェル
が示す対象は統合ターミナル
ではなく、bash
やpowershell
などのシステム(OS)のシェルである。
統合ターミナルはこれらのシステムのシェルを使用している。
これらのシェルを起動する際には、任意のコマンドまたはスクリプトを実行する事ができるオプションを持っているため、このオプションを指定して、シェル起動時に activate
/ activate.bat
/ Activate.ps1
を実行するように設定するとよい。
シェル別のオプションは以下である。
OSX / Linux
$ /bin/bash --rcfile <仮想環境へのPATH>/bin/activate`
ただし、${HOME}/.bashrc
が読み込まれなくなってしまう点に注意しなければならない。
Windows
$ cmd /k <仮想環境へのパス>/Scripts/activate
$ powershell -NoExit -Command <仮想環境へのパス>/Scripts/Activate.ps1
ワークスペースの設定に追加する
統合ターミナルが起動するときに調べておいたコマンドを実行するようVSCodeの設定に追加する。ショートカットからでも表示は可能だが、画面左下の歯車マークをクリックして、設定
を選択するのが簡単であろう。
次に、ワークスペースの設定
タブを選択する。
デフォルトでははじめにユーザ設定
が選択されているが、ユーザ設定
はユーザグローバルに設定が反映される。追加すると、これ以外に使用するプロジェクトすべてに適用されてしまうので注意が必要である。
ワークスペースの設定
を選択したら、環境に応じて次を追記する
{
"terminal.integrated.shellArgs.osx": [
"--rcfile", "<仮想環境へのパス>/bin/activate"
]
}
{
"terminal.integrated.shellArgs.linux": [
"--rcfile", "<仮想環境へのパス>/bin/activate"
]
}
{
"terminal.integrated.shellArgs.windows": [
"/k", "<仮想環境へのパス>/Scripts/activate"
]
}
{
"terminal.integrated.shellArgs.windows": [
"-NoExit", "-Command", "<仮想環境へのパス>/Scripts/activate"
]
}
追記したら、保存する。
このあと、VSCodeを再起動する必要はない。
確認
Ctrl + Shift + ‘
を押して、統合ターミナルを起動する。
次のように、プロンプトの先頭に(envs)
などが表示されれば成功である。
Author And Source
この問題について(【VSCode tips】統合ターミナル開始時に Python 仮想環境(venv) に入る【#2】), 我々は、より多くの情報をここで見つけました https://qiita.com/professor/items/a0fddfd057b66c81f50a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .