0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiskit環境構築 [poetry版] (1) Linuxの導入/設定 <Windows11, WSL2, openSuSE, pyenv, pipx, poetry>

Last updated at Posted at 2025-01-12

概要

 ・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入力
  -> コントロールパネル
   -> プログラムと機能

wsl001.png
wsl002.png
wsl003.png

 「windowsの機能」画面で有効化選択
  ->下記にチェック入れてOK (OK実施後、)再起動要求があります。)
    ■ Hyper-V
    ■ Linux用 Windows サブシステム
    ■ Virtual Machine Platform
wsl004.png
wsl005.png
wsl006.png
wsl007.png
wsl007.png

wsl2のアップデート

★Powershellまたはコマンドプロンプトから実行します。
Powershellまたはコマンドプロンプトを<管理者権限>で開きます。
wsl009.png

下記コマンドを実行

[Powershell]
wsl --update
wsl --version

wsl010.png
wsl011.png

openSuSE LEAPの導入

★Powershellまたはコマンドプロンプトから実行します。
WSL2でインストール可能なディストリビューションの一覧を出力

[Powershell]
wsl --list --online

wsl012.png

openSuSE LEAP 15.6を導入します。

[Powershell]
wsl --install -d openSUSE-Leap-15.6

導入の途中でncursesを使ったYaST2メニューのパネルが開きます。
YaST2では、tabキーを押しながら選択か所を切り替えつつ、エンターキーで実行します。
画像の例では、[Next]が選択されていて、この状態でエンターキーを押すことで実行となります。

Nextを実行します。
wsl015.png

Licence Agreementパネルで Next 選択してエンター
wsl016.png

Local Userパネルでは、tabとキーボードを駆使して、ユーザ名、パスワードを登録します。
  "[x] Use this password for system administrator"はxのまま選択でOK
  " [ ] Automatic Login"は[ ]選択無しのままで大丈夫です。
登録後に Next 選択してエンター
wsl017.png
wsl018.png

"The password is too simple:"などcracklibの警告が出力された場合、tabで"Yes"選んでOK
※皆様はきちんとしたパスワードを設定してください。
wsl019.png

導入が進むのでしばらく待ち。
レポジトリのアップデート等が実施されています。
wsl022.png

"Configuration Completed"パネルが出力されたら導入が完了しています。
Finishを選択して実行してください。
wsl023.png

YaST2パネルが終了して、コンソールの画面に戻ります。
この段階ですでにコンソール上ではWSL2のlinuxにログオンしているので注意してください。
linuxのuname -aコマンドを実行すると"microsoft-standard-WSL2"版のlinuxであることがわかります。
exitでいったんコンソールを閉じます。

環境確認およびexit (Powershellのコンソールだがlinuxログオン状態となっている)
uname -a
exit

wsl024.png

openSuSE導入後確認

★Powershellまたはコマンドプロンプトから実行します。
wsl -l -vコマンドでwsl2に導入されたディストリビューションの稼働状態を確認します。

[Powershell] ディストリビューション稼働状態確認
wsl -l -v

サンプルではopenSUSE-Leap-15.6が稼働中であることがわかります。g)
waku.png

先頭の* : デフォルトのディストリビューション
openSUSE-Leap-15.6 : 環境名。export/import操作により変更可能。
Runnung : 稼働中
VERSION 2 : wslバージョン2
[Powershell] 備考(ディストリビューション導入やり直し)
# 導入をやり直したい場合にディストリビューションを削除するコマンド例
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_002.png
opensuse_003.png

openSuSEのアップデート

★linuxコンソールから下記コマンドを一通り実行
※openSuSEのレポジトリからの反応が遅い場合やパッケージの整合性がとれていないタイミングでは
 無理せず別のタイミングで実施してください。

opensuseのアップデート
# sudoのパスワードを聞かれた場合は、YaST2で設定したパスワードを入力
sudo zypper refresh
# 更新があった場合は "y" を入力してエンター
sudo zypper dup

opensuse_005.png
opensuse_006.png

"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

opensuse_007.png

停止状態のディストリビューションを起動するには、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

パッケージ導入後
opensuse_008.png

Python仮想環境の構築

linuxの基本的な導入が完了しました。
以降はPython仮想環境構築の手順になります。

pyenvの導入

・複数バージョンのPythonをlinuxローカルユーザの環境にインストールしつつ、切り替えて使用するためのツールです。
・Pythonをbuildするための前提パッケージはディストリビューションにより異なります。
 pyenv前提パッケージ
・linuxローカルユーザのhomeディレクトリ直下に導入します。

pyenv前提パッケージの導入(openSuSEの場合)
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します。

pyenv導入
git clone https://github.com/pyenv/pyenv.git ~/.pyenv ; echo $?
ls -a ~/
ls -l ~/.pyenv/

suse001.png

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/

opensuse_010.png

pyenvコマンドの自動補完が効くことをテストします。
pyenvまで入力したらtabキーを押す
自動補完が効かない場合は、openSuSEに再ログインしてください。

自動補完確認
pyenv 

opensuse_011.png

pyenvでpython3.12.8導入
※記載時の最新安定板が3.12.8のため。

pyenvによるPython導入
# 現在pyenvで導入されているPythonの状態確認
pyenv versions

# 導入可能なPythonのバージョンのリスト出力
pyenv install --list

# Python3.12.8導入
pyenv install 3.12.8

# 導入後のPythonの状態確認
pyenv versions

opensuse_014.png

pipxの導入

pipxはPythonのライブラリやモジュールを管理するためのツールです。
poetryの前提として導入します。

pipxの導入にあたり、まずはpipx.pyz (pipxもどき)を導入します。
pipx.pyzはpipxの導入や、pipx自体のアップデートを安全に行うために導入します。
今後もpipx自体のアップデートや削除で使用するため、わかりやすいフォルダに配置しておきます。

pipx.pyzの導入
# 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

opensuse_015.png

pipxの導入
pipxは導入する際に使用した際のpythonバージョンで稼働するため、
この段階でpyenvを使って、新しめのバージョンのPythonを使ってもよい。

pipxの導入
# opensuseの場合
# SYSTEM用Pythonが古いので追加導入したPython3.11を使用します。
python3.11 ~/tool/pipx.pyz install pipx ; echo $?

# Ubuntuの場合
# python3 ~/tool/pipx.pyz install pipx ; echo $?

opensuse_016.png

pipx設定
.bashrcを編集してpipxコマンドの自動補完が効くようにします。
自動補完が効かない場合は、openSuSEに再ログインしてください。

pipxの自動補完設定
#  ~/.bashrcの編集
cd
echo '' >> ~/.bashrc
echo '# env for pipx' >> ~/.bashrc
echo 'eval "$(register-python-argcomplete pipx)"' >> ~/.bashrc
echo '' >> ~/.bashrc

# ~/.bashrcの反映
source ~/.bashrc
pipxの自動補完の確認
#pipxコマンドの自動補完が効くことをテストします。
#pipxまで入力したらtabキーを押す
pipx

# pipxバージョン確認
pipx --version

opensuse_018.png

poetryの導入

poetryはPython仮想環境の構築、ライブラリ/パッケージの依存管理を行うツールです。

poetryの導入
# 導入
pipx install poetry ; echo $?

# 自動補完設定
poetry completions bash >> ~/.bash_completion
source ~/.bash_completion

# 自動補完確認
# 自動補完が効かない場合は、openSuSEに再ログインしてください。
poetry

# poetryバージョン確認
poetry about

suse002.png

poetryパラメータ設定
poetry仮想環境のフォルダごとにライブラリやパッケージを導入する設定を行います。
この設定により、「複数のproject があっても、フォルダを移動する事で環境を切り替え」たり
「projectに導入されたPython仮想環境をVSCodeが認識しやすく」なります。

poetryのvirtualenvs.in-projectパラメータ設定
poetry config --list
poetry config virtualenvs.in-project true ; echo $?  
poetry config --list

suse003.png

続きます。

Qiskit環境構築
【uv版】
(1) Linuxの導入/設定
(2) uvの導入/Python仮想環境の作成

【poetry版】
(1) Linuxの導入/設定
(2) Python仮想環境の作成

【uv/poetry共通】
(3) vscodeからのPython仮想環境接続
(4) シミュレータでの量子回路実行
(5) IBMQ実機での量子回路実行
(6) メンテナンス

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?