Qiskit環境構築 [poetry版] (3) vscodeからのPython仮想環境接続 <Windows11, WSL2, openSuSE,  pyenv, pipx, poetry>

# Qiskit環境構築
当初はpoetryで環境を構築していましたが、uvの方が使いやすいため
下記のuv版の記事を参照してください。poetry版は参考のため残しておきます。

【uv版】
[(1) Linuxの導入/設定](https://qiita.com/reconcat/items/f30839f3c09600e2a6b2)
[(2) uvの導入/Python仮想環境の作成 ](https://qiita.com/reconcat/items/37a4273547ddd0f6006a)
[(3) vscodeからのPython仮想環境接続](https://qiita.com/reconcat/items/79e1ec4ca9989a08dcd0)

【uv/poetry共通】
[(4) シミュレータでの量子回路実行](https://qiita.com/reconcat/items/360d93adddc99a98a3c3)
[(5) IBMQ実機での量子回路実行](https://qiita.com/reconcat/items/4c50c67342d226cb5d7f)
[(6) メンテナンス](https://qiita.com/reconcat/items/50fde8ebf740995f9d7c)

# 概要
　・Windows11/WSL2でのQiskit環境構築手順は需要がありそうなので記載します。
　・IBM Community Japanの2024年ナレッジモール研究に参加した際に使用したQiskit環境の構築手順となります。
　　[IBM Community Japan / ナレッジモール研究](http://qiita.com/)
　・Qiitaの書き方がまだわかっておらず練習を兼ねているため、今後も修正をしていきます。
 
# 本ドキュメントの範囲
  vscodeの導入 -> Python仮想環境への接続
  qiskit/vscodeによる量子回路の作成/実行は別ドキュメントで作成予定です。
  ### vscodeの導入
　(1) Python仮想環境へのipykernel導入
　(2) windowsへのvscode導入
　(3) vscodeからのPython仮想環境接続

# (1) Python仮想環境へのipykernel導入
vscodeから接続する前に、Python仮想環境へipykernelモジュールを導入します。
ipykernelモジュールはjupyter notebookを経由してpythonコードを実行するために使用します。
vscodeから接続した際にも自動的に導入されますが、
モジュールは極力poetry管理で導入したいのであらかじめ実施します。
```bash:[uv版]ipykernelモジュール導入
# linuxから実行します。
# Python仮想環境へディレクトリ移動
cd ~/work/vmPy/vqis
pwd
# 導入
uv add ipykernel ; echo $?
# 確認
uv pip list | grep ipykernel
```

```bash:[poetry版]ipykernelモジュール導入
# linuxから実行します。
# Python仮想環境へディレクトリ移動
cd ~/work/vmPy/vqis
pwd
# 導入
poetry add ipykernel ; echo $?
# 確認
poetry show | grep ipykernel ; echo $?
```
![vscode001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/3d89e861-20ac-2b7d-d848-dc38ae7be3fc.png)


# (2) windowsへのvscode導入
windowsのPowershellから実行。
インストーラーから実行してもよい。
```powershell:vscode導入
# 導入前確認
winget list --id Microsoft.VisualStudioCode
winget search "visual studio code"
# 導入
winget install Microsoft.VisualStudioCode
# 確認
winget list --id Microsoft.VisualStudioCode
```
![vscode003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/44cc460f-ac3f-0b1b-3d0f-379822960365.png)

vscode導入中、「セットアップ」別ウィンドウが起動される。
![vscode002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/339c3fdd-c5a0-d822-166a-7d1a5d68b300.png)

```powershell:[参考] vscode削除
# 削除
winget uninstall Microsoft.VisualStudioCode
# ユーザ用ディレクトリ削除
Remove-Item ("$env:USERPROFILE\.vscode") -Recurse -Force 
Remove-Item ("$env:APPDATA\Code") -Recurse -Force 
```
(3) vscodeからのPython仮想環境接続
windowsでvscodeを起動
![vscode004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/04aeb376-35b3-23da-b881-bec86e0d8899.png)
![vscode005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/833a0808-77ac-13ac-0b7b-a1fca6810bf7.png)

[Remote Development extension導入]
vscodeでリモート接続用extensionを導入
左ペインのextensionsボタンをクリック
![z001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/4097c98e-3e81-ccc3-94f1-b6049c5c6012.png)

extensionsの検索ウィンドウでremoteを検索
"Remote Development / Microsoft"をインストール。
自動的にWSL、pythonやjupyter用の依存extensionsも導入される。
![vscode008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/65378f01-ebb4-15fe-8de0-1623b2cfd170.png)

[WSL接続]
左ペインの"Remote Explorer"をクリック
"WSL TARGETS"の"->"をクリック
![z002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/63d60713-c4cd-d47e-7e3c-0668707ae33c.png)

WSLに接続された。
画面左下に"WSL:接続ディストリビューション名"が表示されている。
![z003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/752daab9-b002-7ba0-add0-40e9158cabad.png)

[Python仮想環境のディレクトリを開く]
左ペイン"Explorer"をクリック
"Connection to remote"の"Open Folder"をクリック
上部コマンドウィンドウでPython仮想化環境のディレクトリを指定して"OK"
![z004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/2bcb6f5d-78bb-4fdb-701d-bb69a6e24203.png)

"Do you trust the authors of the files in this folder?"が表示されたら、
接続先に問題がないことを確認し、"Yes, I truste the authors"をクリック
![vscode018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/5292ecbb-99e1-6a87-81cf-1211956da6be.png)

vqisディレクトリをクリック後、"New file"をクリック。
ファイル名を"適当な名前.ipynb"で作成する。
※"src"ディレクトリを作成し、"__init__".pyを配置したうえで
　コードを作成するのが最近のやり方。ツールを使った構文チェック等でメリットが出る。
![z005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/2eaadc41-ccff-73d7-0aee-f416ce6a630d.png)
![z006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/ab6402a0-c3fd-bbe3-d477-3b57388f847d.png)

"適当な名前.ipynb"をクリックして選択
"+ Code"ボタンをクリックして、jupyter notebookのコードブロックを追加
下記のコードを入力したら、Ctrl-vキーやメニューからファイルを保存。
その後、"Select kernel"をクリック。
```python:テスト用コード
import qiskit
```
![z007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/25f5f735-1ec4-0b3c-3d5c-4b3311535ffd.png)

[Python仮想環境のPython kernel指定]
実際にはvscodeがどのようにしてpython kernelを探しているのかあまりよくわかってないため
いったんvscodeを停止したりなどの操作を入れています。

上部コマンドウィンドウ"Select kernel"で"Python Environment"を選択
![z008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/327b338c-836d-6541-484e-49e2eb223ccd.png)

上部コマンドウィンドウ"Select a Python Environment"で"Install Python"を選択
![z009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/068b82c2-b04b-6ae9-ea7d-5df5304ccc82.png)

"Install Python"に対する警告が出るので"Cancel"をクリック
![z010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/819f6c15-54b2-9cf1-dea9-b7d211f7ae40.png)

よくわかりませんが、ここまで手順を進めておいてからvscodeを再起動すると
vscodeがPython仮想環境のPythonカーネルを見つけることができるようになります。
vscodeウィンドウ右上の×をクリックしてアプリをいったん終了する。
下記のウィンドウが出たら"Save"をクリック。
![z011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/4eeb894a-17bd-21cf-baad-7e13d604710c.png)

再度、vscodeを開いたら前述の手順で再度WSLのPython仮想ディレクトリにアクセス
"適当な名前.ipynb"を開き、"Select kernel"をクリックすると
Python仮想環境で使用するPythonを指定できる。
★付きで推奨、かつ、Python仮想ディレクトリ内の.venevのkernelを選択することで
仮想環境のPythonを使用してコードを実行できるようになる。
![z012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/1a636c60-df14-7e3e-b1c7-a600ec50f06e.png)
コード実行
![z013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/8d751293-5c8b-398b-4d3c-50c5794fd672.png)

この時点でQiskit環境が構築できているのであとは好きにコードを作って実行できるようになりました。
Pythonカーネルの指定はファイルごとに必要になります。

## 続きます。
Qiskit環境構築
【uv版】
[(1) Linuxの導入/設定](https://qiita.com/reconcat/items/f30839f3c09600e2a6b2)
[(2) uvの導入/Python仮想環境の作成 ](https://qiita.com/reconcat/items/37a4273547ddd0f6006a)
[(3) vscodeからのPython仮想環境接続](https://qiita.com/reconcat/items/79e1ec4ca9989a08dcd0)

【poetry版】
[(1) Linuxの導入/設定](https://qiita.com/reconcat/items/78ca5bf02fda616d6561)
[(2) Python仮想環境の作成](https://qiita.com/reconcat/items/76507b2743a9f3c40d43)
[(3) vscodeからのPython仮想環境接続](https://qiita.com/reconcat/items/ad4cb6f7c9c273f0ae3f)

【uv/poetry共通】
[(4) シミュレータでの量子回路実行](https://qiita.com/reconcat/items/360d93adddc99a98a3c3)
[(5) IBMQ実機での量子回路実行](https://qiita.com/reconcat/items/4c50c67342d226cb5d7f)
[(6) メンテナンス](https://qiita.com/reconcat/items/50fde8ebf740995f9d7c)