概要
・Windows11/WSL2でのQiskit環境構築手順は需要があるかもしれないで記載します。
・IBM Community Japanの2024年ナレッジモール研究に参加した際に
使用したQiskit環境の構築手順となります。
IBM Community Japan / ナレッジモール研究
・Qiitaの書き方などよくわかっていませんが、とりあえず勢いで投稿します。
後から徐々に修正します。
環境
・手順では< Windows11, WSL2, openSuSE LEAP, pyenv, pipx, poetry >を
組み合わせた環境を構築します。
・poetryを使用すると、パッケージの依存関係を考慮したアップデートが
可能になるため継続的にqiskitを扱っていく場合にメリットが出てきます。
※自分は今後、pyenv/poetryをuvに置き換えようと思っています。
・手順のディストリビューション差異を減らすことや、
ツールの導入をhomeディレクトリなど最小限にするために、
パッケージを使わずに各ツールをgitbubから導入する手順にしています。
このため、macのbrewコマンドを使った構築より大幅に面倒な手順になっています。
※ディストリビューションによってはパッケージで配布されている
pyenvが古く、新しいPythonが使用できないものもありました。
・記事ではopenSuSE LEAPを使用していますが、ubunutuの手順との差は
さほど無いので同様に環境構築できます。
※gitやpythonなどの初期導入パッケージ状況が違う程度の差になります。
・windowsのメモリは多い方がいいです。
8GBの場合はかなり厳しい状態に追い込まれるため、
windowsの仮想メモリ設定で増やした方がいいかも。
本ドキュメントの範囲
WSL2の導入 -> poetry導入および設定まで。
poetryによるPython仮想環境の作成 -> Qiskit >=1.0での量子回路実行は
別ドキュメントで作成予定です。
Qiskit環境構築手順
WSL2 -> openSuSE LEAP -> pyenv -> pipx -> poetryの順に導入します。
WSL2の導入
★windowsのGUI操作を実施します。
※ubintuを導入する場合は、windows11のpowershell/コマンドプロンプトから
'wsl.exe --install"すればwsl2およびubuntu linuxまで自動で導入されるため、この手順は不要です。
本手順ではubuntuの導入を避けるため、windowsのコントロールパネルからWSL2を導入します。
[windows11から下記を実施]
スタートメニューにcont入力
-> コントロールパネル
-> プログラムと機能
「windowsの機能」画面で有効化選択
->下記にチェック入れてOK (OK実施後、)再起動要求があります。)
■ Hyper-V
■ Linux用 Windows サブシステム
■ Virtual Machine Platform
wsl2のアップデート
★Powershellまたはコマンドプロンプトから実行します。
Powershellまたはコマンドプロンプトを<管理者権限>で開きます。
下記コマンドを実行
wsl --update
wsl --version
openSuSE LEAPの導入
★Powershellまたはコマンドプロンプトから実行します。
WSL2でインストール可能なディストリビューションの一覧を出力
wsl --list --online
openSuSE LEAP 15.6を導入します。
wsl --install -d openSUSE-Leap-15.6
導入の途中でncursesを使ったYaST2メニューのパネルが開きます。
YaST2では、tabキーを押しながら選択か所を切り替えつつ、エンターキーで実行します。
画像の例では、[Next]が選択されていて、この状態でエンターキーを押すことで実行となります。
Licence Agreementパネルで Next 選択してエンター
Local Userパネルでは、tabとキーボードを駆使して、ユーザ名、パスワードを登録します。
"[x] Use this password for system administrator"はxのまま選択でOK
" [ ] Automatic Login"は[ ]選択無しのままで大丈夫です。
登録後に Next 選択してエンター
"The password is too simple:"などcracklibの警告が出力された場合、tabで"Yes"選んでOK
※皆様はきちんとしたパスワードを設定してください。
導入が進むのでしばらく待ち。
レポジトリのアップデート等が実施されています。
"Configuration Completed"パネルが出力されたら導入が完了しています。
Finishを選択して実行してください。
YaST2パネルが終了して、コンソールの画面に戻ります。
この段階ですでにコンソール上ではWSL2のlinuxにログオンしているので注意してください。
linuxのuname -aコマンドを実行すると"microsoft-standard-WSL2"版のlinuxであることがわかります。
exitでいったんコンソールを閉じます。
uname -a
exit
openSuSE導入後確認
★Powershellまたはコマンドプロンプトから実行します。
wsl -l -vコマンドでwsl2に導入されたディストリビューションの稼働状態を確認します。
wsl -l -v
サンプルではopenSUSE-Leap-15.6が稼働中であることがわかります。g)
先頭の* : デフォルトのディストリビューション
openSUSE-Leap-15.6 : 環境名。export/import操作により変更可能。
Runnung : 稼働中
VERSION 2 : wslバージョン2
# 導入をやり直したい場合にディストリビューションを削除するコマンド例
wsl -l -v
wsl --unregister openSUSE-Leap-15.6
wsl -l -v
openSuSEへのログイン
windowsのスタートメニューのプログラムに"openSUSE Leap 15.6"が追加されているので起動します。
※プログラムの実体はwindowsの"コンソール"プログラムですが、
起動後にWSL2内で稼働する"openSUSE-Leap-15.6"にログインしています。
「hostname,$PS1のカスタマイズやexport/import、ディストリビューション名変更」等のカスタマイズは別のエントリで記載予定。
openSuSEのアップデート
★linuxコンソールから下記コマンドを一通り実行
※openSuSEのレポジトリからの反応が遅い場合やパッケージの整合性がとれていないタイミングでは
無理せず別のタイミングで実施してください。
# sudoのパスワードを聞かれた場合は、YaST2で設定したパスワードを入力
sudo zypper refresh
# 更新があった場合は "y" を入力してエンター
sudo zypper dup
"sudo zypper dup"の結果、
"They should be restarted to benefit from the latest updates."が出力されていたら
opensuse leapを再起動します。
openSuSEの再起動
★前提作業としてopenSuSEのすべてのターミナルからexitしてください。vscode等起動していれば停止してください。
★openSuSEの再起動はwindowsのpowershellまたはコマンドプロンプトから実行します。
wsl -tオプションでディストリビューションを停止します。
実行後、STATE が "Stopped"になって停止したこと確認します。
wsl -l -v
wsl -t openSUSE-Leap-15.6
wsl -l -v
停止状態のディストリビューションを起動するには、windowsのスタートメニューのプログラムに"openSUSE Leap 15.6"を起動してログインすれば完了します。
openSuSEのパッケージ導入
必須ではありませんが、パッケージを導入していきます。
Qiskit環境の導入としては下記が必要です。他は無理して入れる必要はありません。
git(poetryの依存)
python311(system用Pythonのバージョンが古いため)
bash-completion,python311-argcomplete(pipx,poetryのコマンド自動補完).
何か聞かれたら、メッセージをちゃんと読んだうえでyを返答します。
# パッケージ導入後、前出の手順でopenSuSEの再起動を実施てください。
sudo zypper install -t pattern wsl_base
sudo zypper install -t pattern wsl_gui
sudo zypper install -t pattern wsl_systemd
sudo zypper install -t pattern kde
sudo zypper install git bash-completion python311-argcomplete python311 MozillaFirefox neofetch screenfetch tree
Python仮想環境の構築
linuxの基本的な導入が完了しました。
以降はPython仮想環境構築の手順になります。
pyenvの導入
・複数バージョンのPythonをlinuxローカルユーザの環境にインストールしつつ、切り替えて使用するためのツールです。
・Pythonをbuildするための前提パッケージはディストリビューションにより異なります。
pyenv前提パッケージ
・linuxローカルユーザのhomeディレクトリ直下に導入します。
sudo zypper install gcc automake bzip2 libbz2-devel xz xz-devel openssl-devel ncurses-devel \
readline-devel zlib-devel tk-devel libffi-devel sqlite3-devel gdbm-devel make findutils patch
pyenvをhomeディレクトリの.pyenvにcloneします。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv ; echo $?
ls -a ~/
ls -l ~/.pyenv/
pyenv有効化
pyenvを~/.pyenvに配置したので、環境変数pathに通します。
# homeディレクトリに移動し、.bashrcをバックアップ
cd ~
pwd
cp -p ~/.bashrc ~/.bashrc_orig
# .bashrcをカスタマイズして、pyenvを環境変数pathに通す。
echo '' >> ~/.bashrc
echo '# env for pyenv' >> ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo '' >> ~/.bashrc
source ~/.bashrc
# pyenvのコマンド補完を有効化する。
sudo cp -p ~/.pyenv/completions/pyenv.bash /etc/bash_completion.d/
pyenvコマンドの自動補完が効くことをテストします。
pyenvまで入力したらtabキーを押す
自動補完が効かない場合は、openSuSEに再ログインしてください。
pyenv
pyenvでpython3.12.8導入
※記載時の最新安定板が3.12.8のため。
# 現在pyenvで導入されているPythonの状態確認
pyenv versions
# 導入可能なPythonのバージョンのリスト出力
pyenv install --list
# Python3.12.8導入
pyenv install 3.12.8
# 導入後のPythonの状態確認
pyenv versions
pipxの導入
pipxはPythonのライブラリやモジュールを管理するためのツールです。
poetryの前提として導入します。
pipxの導入にあたり、まずはpipx.pyz (pipxもどき)を導入します。
pipx.pyzはpipxの導入や、pipx自体のアップデートを安全に行うために導入します。
今後もpipx自体のアップデートや削除で使用するため、わかりやすいフォルダに配置しておきます。
# pipx.pyz置き場を作成します。
# 本手順では~/tool/pipx.pyzに配置します。
ls -ld ~/tool
mkdir -p ~/tool ; echo $?
ls -ld ~/tool
cd ~/tool
pwd
# pipx.pyz導入
wget https://github.com/pypa/pipx/releases/latest/download/pipx.pyz
pipxの導入
pipxは導入する際に使用した際のpythonバージョンで稼働するため、
この段階でpyenvを使って、新しめのバージョンのPythonを使ってもよい。
# opensuseの場合
# SYSTEM用Pythonが古いので追加導入したPython3.11を使用します。
python3.11 ~/tool/pipx.pyz install pipx ; echo $?
# Ubuntuの場合
# python3 ~/tool/pipx.pyz install pipx ; echo $?
pipx設定
.bashrcを編集してpipxコマンドの自動補完が効くようにします。
自動補完が効かない場合は、openSuSEに再ログインしてください。
# ~/.bashrcの編集
cd
echo '' >> ~/.bashrc
echo '# env for pipx' >> ~/.bashrc
echo 'eval "$(register-python-argcomplete pipx)"' >> ~/.bashrc
echo '' >> ~/.bashrc
# ~/.bashrcの反映
source ~/.bashrc
#pipxコマンドの自動補完が効くことをテストします。
#pipxまで入力したらtabキーを押す
pipx
# pipxバージョン確認
pipx --version
poetryの導入
poetryはPython仮想環境の構築、ライブラリ/パッケージの依存管理を行うツールです。
# 導入
pipx install poetry ; echo $?
# 自動補完設定
poetry completions bash >> ~/.bash_completion
source ~/.bash_completion
# 自動補完確認
# 自動補完が効かない場合は、openSuSEに再ログインしてください。
poetry
# poetryバージョン確認
poetry about
poetryパラメータ設定
poetry仮想環境のフォルダごとにライブラリやパッケージを導入する設定を行います。
この設定により、「複数のproject があっても、フォルダを移動する事で環境を切り替え」たり
「projectに導入されたPython仮想環境をVSCodeが認識しやすく」なります。
poetry config --list
poetry config virtualenvs.in-project true ; echo $?
poetry config --list
続きます。
Qiskit環境構築
【uv版】
(1) Linuxの導入/設定
(2) uvの導入/Python仮想環境の作成
【poetry版】
(1) Linuxの導入/設定
(2) Python仮想環境の作成
【uv/poetry共通】
(3) vscodeからのPython仮想環境接続
(4) シミュレータでの量子回路実行
(5) IBMQ実機での量子回路実行
(6) メンテナンス