本記事ではPython
の開発環境をWindows
とVS Code
で構築してみます。
今回利用する環境
- Windows 10 21H2
- Python 3.10.4
- VS Code 1.66.2
- Python extension for Visual Studio Code v2022.4.1(VS Code拡張)
各種ドキュメント
- Python
- Python 3.10.4 ドキュメント
- Python チュートリアル
- Windows で Python を使う
- Python For Beginners
- BeginnersGuide
- Python Packaging User Guide
- Getting Started with Python in VS Code
- Python extension for VS Code
Pythonのインストール
Windows
端末にPython
をインストールする手段としてはマイクロソフトストア
やwinget
を利用する方法もありますが、今回はpython.orgの完全インストーラーからインストールする方法を利用します。
なお公式ドキュメントにWindows
向けの説明があるのでこちらを参照してPython
をインストールします。
インストールするバージョンについて
記事執筆時点では、Python v3.10.4 64bit
がダウンロードできたためこちらをインストールします。
なおWindows環境ではv3.9.0
より前はpython.org
でデフォルトでダウンロードされるインストーラーは32bit版だったようですが、v3.9.0
からは64bit版がデフォルトになったようです。
ダウンロードしたインストーラーを実行してインストール
ダウンロードしたインストーラを実行します。
今回、特にデフォルト設定から変更せずにインストールしますが、Customze installation
でどんな項目があるか確認してインストールしていきます。
なお、Python 3.10.4
では環境変数PATH
にpython.exe
を追加しない設定が、インストーラデフォルトの設定となっており、本手順ではpython.exe
をPATH
に追加しないでpyランチャー(py.exe)
を利用する方針でインストールします。
Install Python 3.10.4(64-bit)
Customize installation
を選択
Optional Features
Windowsだとマニュアル
やpip
やtcl/tk(GUI)
やIDLE
やテストスイート
がデフォルトでチェックされていました。
本記事では、pip
とpy launch
しか使いませんがこのままNext
を選択。
Advanced Options
デフォルトでは
- Associate files with Python(Requires the py launcher)
- Create shortcuts for installed applications
pyファイルの関連付けとショートカット作成にチェックが入っている状態となっていました。
このままInstall
を選択
なお最初の選択画面で、Add Python 3.10 to PATH
にチェックを入れていない場合でも。
Advanced OptionsでAdd Python to environment variables
にチェックを入れると連動してチェックが入るようです。
Setup was successfull
Close
を選択
インストール完了。
下記ページにWindows
でPython
を利用する際の諸々が書いてるので目を通しておくと色々と捗ります。
Pythonランチャとバージョン確認
まずはインストールされたPython
のバージョンを確認します。
今回はインストールオプションでAdd Python 3.10 to PATH
にチェックを入れてないため、python.exe
にPATH
が通っていません。
インストール時のオプションでpy launcher
にチェックをつけてインストールしましたが、py launcher(py.exe)
はC:\WINDOWS\py.exe
にインストールされます。
このため別途環境変数を追加する事なく、py
だけで実行できる状態となります。
ここではpy --version
でインストールされているPythonのバージョンを確認します。
バージョンの確認
py.exeのインストール場所確認
Pythonを対話モード(REPL)で起動してみる
py
をオプション指定なしで実行すればREPL(Read eval print loop:対話的実行環境)
でPython
が起動し対話式で逐次処理を実行します。
なおRFPL
を終了する場合はexit()
と入力するか CTRL-Z
-> Enter
と入力すれば終了できます。
【余談】Pythonコマンドがインストールされてない状態でpythonコマンドを実行すると
Windows 10
でPython
コマンドを実行するとブラウザが起動して、マイクロソフトストアのPython
インストール画面が表示されます。
これは、Windows 10 May 2019 Update(バージョン 1903)
から追加された機能で、この動作については下記にドキュメントがあります。
python.exe を実行すると Microsoft Store が開くのはなぜですか?
実体としてどのような仕組みで動作しているか確認すると下記のようになっており。
このpython.exe
はどこで制御されているかといえば、アプリと機能
のアプリ実行エイリアス
で制御されている項目になります。
本記事ではPython
はインストールしましたが、python.exe
に環境変数PATH
を通していないため、間違えてpython
と実行するたびにマイクロソフトストアが開くのも微妙なためアプリ実行エイリアスはオフにします。
これでpython
,python3
実行時にコマンドが見つからないとエラーになります。
VS Codeのインストール
公式のセットアップガイドに従いインストールします。
VS Code Python拡張機能の設定
本記事では下記ドキュメントの記事を参照して設定してみます。
Getting Started with Python in VS Code
拡張機能のインストール
Microsoftが提供しているPython拡張機能をインストール。
この拡張機能は、Python開発を便利にするインテリセンス(Pylance)、lint、デバック、コードナビゲーション、コードフォーマット等々を提供してくれます。
なお今回インストールする、拡張機能のバージョンではv2022.4.1
では下記の拡張機能も一緒にインストールされるようです。
プロジェクトフォルダの作成
Start VS Code in a project (workspace) folder
下記のコマンドを実行してhello
というディレクトリを作成しVS Code
で開く。
今回はプロジェクトフォルダとしてc:\temp\python\helloディレクトリを作成しました。
mkdir hello
cd hello
code .
インタープリタの選択
VS Code
起動後、コマンドパレット(Ctrl+Shift+P
)からPython: Select Interpreter
からインタープリタを切り替える事ができます。
いま時点では、先程インストールした3.10.4 64-bitが表示されている事を確認します。
hello.pyの作成
ファイル
-> 新規ファイル作成
(ctrl+N
)からファイル hello.py
を作成して下記をコーディング。
msg = "Hello World"
print(msg)
これは1行目でmsg
に文字列Hello Worldを代入。
2行明でprint関数で変数msgを表示しているプログラムになります。
pyファイルをVS Code
で編集していると、ステータスバーの右下に先程確認したインタープリタが表示されているかと思います。
hello.pyの実行
下記画像赤枠の実行ボタンからプログラムを実行します。
ターミナルパネルで実行されます。
上記のように先程、表示されたインタープリタにc:\temp\python\hello\hello.py
を引数として渡して実行している事がわかります。
CUIからhello.pyの実行
VS Code
上のRUN
ボタンからプログラムを実行しましたが。
CUI
からhello.py
を実行する場合は、Pythonランチャ(py.exe)
に引数としてhello.py
を渡して実行します。
hello.pyをデバッカ実行
Configure and run the debugger
ここではhello.py
をデバック実行をしてみます。
まずはhello.py
のソースコード2行目にカーソルを合わせてF9
。
これで2行目にbreak-point(赤丸)
が設定されました。
break-point
が設定された状態でF5
を選択 -> Python File
を選択
デバック実行が起動して、break-point
を設定した2行目で処理が停止します。
デバック実行をするとデバックツールバーが出てくるので、こちらを利用してデバック処理のステップを進めます。
-
F5
キーを実行して中断した処理を継続 -
F10
キーを実行してステップ実行 -
F11
キーを実行してステップイン実行 -
Shift+F11
キーを実行したりステップアウト実行 -
Ctrl+Shift+F5
キーを実行してデバッガを再起動 -
Shift+F5
キーを実行して停止
またデバック実行時は、実行時の変数の状態や、ウォッチ式を設定したり諸々のデバック機能が利用できます。
またデバック時にはデバックコンソール
パネルで変数を操作したり、式を評価したりできます。
msg
msg.capitalize()
msg.split()
ちなみにVS Code
ではlaunch.jsonというファイルを作って、高度なデバック設定をすることができる。
詳細については下記にドキュメントがります。
本記事でも後で触れます。
仮想環境の作成とパッケージのインストール
PyPI - the Python Package Index
Python
では様々なパッケージが公開されており、ある時からPython標準になったパッケージマネージャpip
を利用することにより手軽に各種パッケージを利用できます。
パッケージは強力で便利ですが、開発環境に無秩序にパッケージを突っ込んでいくと、当然のごとく開発環境がカオスなことになっていきます。
Python 3.3
からvenv
という仮想環境機能が標準で追加されており。
用途ごとに、仮想環境を作りそこに個別にパッケージをインストールしていくと手法が使えます。
ここではVS Code
上で仮想環境.venv
を作成してパッケージをインストールしてみます。
仮想環境の作成と有効化
Global, virtual, and conda environments
まずは仮想環境を作成します。
仮想環境は下記コマンド実行して作成します。
py.exe -m venv .venv
今回は先程作成したhello
というフォルダの配下に.venv
という名前で仮想環境を作成しています。
仮想環境は作成しただけでは有効にならず、有効化する必要があります。
有効化を行うにはWindows
の場合はbat
用とPowerShell
用の下記が用意されています。
それぞれお使いのシェル環境で使い分けて下さい。
- bat:
<<env_dir>>\Scripts\activate.bat
- ps1:
<<env_dir>>\Scripts\Activate.ps1
このactivte
スクリプトを実行すると仮想環境が有効になります。
また有効になった仮想環境を抜ける場合は環境によって下記を実行して下さい。
- bat:
<<env_dir>>\Scripts\deactivate.bat
- ps1:
deactive
oh-my-posh
で表示をカスタマイズしているため分かりづらいかもしれませが。
下記の画像で、(.venv)
となっていたり .venv 3.10.4
と仮想環境が有効になっているのが確認できます。
Activate.ps1はあるけど、Deactivate.ps1はない?
ps1
の方は、bat
と違いDeactivate.ps1
が用意されていない? と疑問に思いましたが、Activate.ps1
の中でdeactivate
というfunction
を定義しており。
仮想環境有効化時にdeactivate
を読み込んでいるので、これを実行して仮想環境を無効化しています。
仮想環境が有効な状態ではdeactivate
がfunctionで定義されているのが確認できます。
VS Code環境で仮想環境をインタープリタとして選択
仮想環境を作成できたので、ここでは作成した仮想環境をVS Code
で利用する方法を説明します。
コマンドパレット(Ctrl+Shift+P
)からPython: Select Interpreter
を選択して
先程作成した.venv
を選択します
ステータスバーを確認にすると今回作成した.venv
が指定されている事を確認できます。
この状態で、統合コンソール(CTRL+SHIFT+@)
を新しく起動すると起動時に仮想環境をActive
にして起動してきます。
なおPython拡張機能がインストールされたVS Code
を起動している状態で、ワークスペースに仮想環境が作成されると下記のようなポップアップがでてきます。
ここでyes
を選択すると、上記と同様にPython interpreter
に作成した仮想環境が設定されます。
パッケージのインストール
今回は.venv
という仮想環境にmatplotlib
というライブラリをインストールして利用してみます。
まずはmatplotlib
を利用するプログラムを作成します。
下記プログラムを、standardplot.py
という名前で作成します。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 20, 100) # Create a list of evenly-spaced numbers over the range
plt.plot(x, np.sin(x)) # Plot the sine of each x point
plt.show() # Display the plot
なおまだライブラリをインストールしていないため、この時点で実行するとエラーになります。
.venv
の仮想環境を有効にしている状態で下記コマンドを実行して.venv
にmatplotlib
をインストールします。
py -m pip install matplotlib
インストール完了しました。下記コマンドでインストールされているパッケージを確認します。
py -m pip list
matplotlib
と関係するパッケージがインストールされている事が確認できます。
この状態でstandardplot.py
を実行します。
matplotlib
ライブラリを利用して図が表示されました。
図が表示1
VS Codeでlaunch.jsonを利用したデバックのカスタマイズ
launch.json
を利用してデバック実行時の引数を指定したデバック実行をしてみます。
下記のプログラムをargv.py
というファイル名で作成する。
また6行目のprint(sys.argv)
にbreak-point
を設定。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
print(sys.argv)
argv.py
は渡された引数を表示する簡易なプログラムになります。
このargv.py
に対してデバック実行時に引数を渡して実行するようにlaunch.json
を設定します。
launchljsonファイルを作成します
を選択
Python
を選択
Python File
を選択
テンプレートからlaunch.json
が作成されました。
VS Code
ではこのlaunch.json
を設定してデバックをカスタマイズします。
今回は下記のようにargv.pyを実行
を追記してみました。
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "argv.pyを実行",
"type": "python",
"request": "launch",
"program": "${workspaceRoot}/argv.py",
"console": "integratedTerminal",
"args": [
"Hello",
"world"
]
}
]
}
追加箇所としては、argv.pyを実行
を追加しました
${workspaceRoot}
はlaunch.json
で利用できる変数になり、これはVS Code
のワークスペースディレクトになります。
launch.json
で利用できる変数については下記にドキュメントがあります。
launch.json
を設定するとデバック実行の画面にargv.pyを実行
が追加されます。
こちらを選択して実行ボタンを押すとデバック実行が起動して、先程breakpoint
を設定した6行目で停止します。
この状態で、デバックコンソールでsys.argv
を確認すると下記のようにlaunch.json
で指定したHello
とWorld
が渡して実行されている事が確認できます。(0番目は実行されているスクリプトが入る)
タスク設定
VS Code
には一連の処理をタスクとして設定し、実行するタスクランナー
が用意されています。
このタスクはtasks.json
ファイルでタスクを設定する事ができます。
Integrate with External Tools via Tasks
echoを実行するタスク
コマンドパレット(Ctrl+Shift+P
)からTasks: Configure Task
を選択します。
テンプレートからtasks.jsonを生成
を選択
Ohters
を選択。
テンプレートからtasks.jsonが生成されました。
これはshellでecho Helo
を実行するタスクになります。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "echo Hello"
}
]
}
コマンドパレット(Ctrl+Shift+P
)からTasks: Run Task
を選択してecho
を選択
Tasks: Run Task
を選択
echo
を選択
タスクの出力をスキャンせずに続行
を選択
ターミナル
でタスクが実行されているのを確認できます。
設定しているインタープリタでpyファイルを実行するタスク
echoをシェルで実行するタスクを生成しましたが。
次はタスクでVS Code
に設定しているインタープリタでpy
ファイルを実行するTasks.json
を設定してみます。
ここではexecute standardplot
で先程作成したstandardplot.py
を実行するタスクを追加してみます。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "echo Hello"
},
{
"label": "execute standardplot",
"type": "shell",
"command": "${command:python.interpreterPath}",
"args":["${workspaceRoot}\\standardplot.py"]
}
]
}
command
とargs
については、フルパスをベタで書いても動きますが、ここではVS Code
で利用できる変数を利用して設定しています。
ここで利用している変数、${command:python.interpreterPath}
と${workspaceRoot}
の説明は下記にドキュメントがあります。
Integrate with External Tools via Tasks
-
${command:python.interpreterPath}
でVS Code
で選択しているインタープリタのパスを取得。 - ${workspaceRoot}、現在のワークスペースを取得
Tasks: Run Task
を選択
execute standardplot
を選択
タスクの出力をスキャンせずに続行
を選択
ターミナルでstandardplot.py
が実行されているのがわかります。
まとめ
Pythonは歴史が長い言語だけあり。
- Python2とPython3の話だったり
- 32bitと64bitの話だったり
- 仮想環境の管理の話だったり
- インストーラー、マイクロソフトストア、winget
- Anaconda等の各種ディストリビューションの話だったり
前提として色々と積もる話はありますが、今回はVS Code
の拡張機能の説明部分をメインにインストールについてまとめて見ました。