メインコンテンツへスキップ

新しい Qiskit 1.0 パッケージをインストールする

Qiskit 1.0 は以前のバージョンとは異なるパッケージ構造を採用しており、Qiskit 1.0 に対応していないパッケージを使用している環境では問題が発生する可能性があります。

注意

既存の Python 仮想環境を Qiskit 1.0 にインプレースでアップグレードしようとしないでください。

今後、同様の破壊的なパッケージ変更は行いません。これは Qiskit 1.0 のリリース時に限った一度限りの変更であり、将来のパッケージ管理をできる限り簡単にするためのものです。

このガイドは以下のセクションに分かれています。自分に関係するセクションだけを参照してください。

  • ユーザーの方は ユーザー向け セクションをお読みください。
  • Qiskit に依存するパッケージを開発・メンテナンスしている方は 開発者向け セクションをお読みください。
  • Qiskit 1.0 のインストールまたはインポートで問題が発生した場合は、トラブルシューティング セクションをご確認ください。

古いパッケージ構造と変更理由を理解したい場合は、パッケージ変更の概要 をご覧ください。

ユーザー向け

Qiskit 1.0 をインストールするには、新しい仮想環境を作成する必要があります。 既存の環境をインプレースで Qiskit 1.0 にアップグレードするのは非常にトラブルが起きやすく、エラーが発生しやすいです。

備考

このセクションの例では、Python 標準ライブラリの一部である venv モジュールを使用しています。 virtualenvconda など別のツールを使用している場合は、そのドキュメントを参照してください。

Linux および macOS のコマンドには bash 構文を使用しています。 Windows のコマンドには PowerShell を使用しています。

新しい環境を作成する

  1. 作業中の各プロジェクトディレクトリに、Python 3.8 以降の任意のバージョンを使用して新しい仮想環境を作成します。

    python3 -m venv .venv
  1. 環境を有効化します。

    source .venv/bin/activate
  2. 必要なパッケージをインストールします。 すべての依存関係を一つの pip install コマンドにまとめて実行することを推奨します。

    pip install 'qiskit>=1'

    追加のパッケージを引数として含めることもできます。例えば:

    pip install 'qiskit>=1' jupyterlab pandas matplotlib

    Qiskit 1.0 には破壊的な変更が含まれているため、いくつかのパッケージは Qiskit 1.0 との互換性がまだないとしてマークされています。そのため、それらの新しいバージョンがリリースされるまで pip からエラーが表示されることがあります。古いバージョンのパッケージが旧来の qiskit-terra パッケージに依存している場合もあります。そのようなパッケージはこのコマンド実行時にエラーを返さないことがありますが、import qiskit を実行するとエラーが発生する場合があります。qiskit-terra に直接依存するパッケージはインストールしないでください。

    ヒント

    個々の install コマンドで pipqiskit-terra のインストールを禁止するよう強制する方法の一つとして、qiskit-terra を不可能なバージョンに設定する制約ファイルを使用する方法があります。 例えば、qiskit-terra>=1.0 という行を含む制約ファイルがあれば、依存関係が qiskit-terra のインストールを試みても、公開されているバージョンはどれも要件に一致しません。

    そのようなファイルを GitHub Gist として https://qisk.it/1-0-constraints で提供しています。次のように使用できます:

    pip install -c https://qisk.it/1-0-constraints qiskit [other packages]

    パッケージが qiskit-terra を必要とする場合、解決失敗 が表示されます。

    注意

    この仮想環境には Qiskit 1.0 と互換性のないパッケージをインストールしないでください。そのようなパッケージを使用する必要がある場合は、Qiskit 0.45 または 0.46 を使用した別の仮想環境にインストールしてください。

    既存の環境がある場合は、pipdeptree を使用してインストール済みパッケージの要件を確認し、qiskit<1 を必要とするものがないか調べられます。qiskit<1 を必要とするものについては、Qiskit 1.0 と互換性のある新しいバージョンがないか確認してください。

    問題が発生した場合は、トラブルシューティング セクションを参照するか、Qiskit Slack でお問い合わせください。バグと思われる場合は、Qiskit に Issue を作成 できます。

  3. 環境をすぐに使用しない場合は、deactivate コマンドを使用して環境から抜け出してください。

新しい環境を使用する

新しいコマンドラインセッションを開始するたびに、プロジェクトディレクトリに移動し、activate コマンドを実行して環境を「有効化」する必要があります:

source .venv/bin/activate

開発者向け

Qiskit に依存するパッケージをメンテナンスしている場合は、この情報を参考にして互換性の正しい表現方法と Qiskit 1.0 に対するテスト方法を学んでください。

要件に関する推奨事項

Qiskit 1.0 との互換性が不明な場合は、パッケージに qiskit>=0.45,<1(または他の適切な下限値)を要求することを推奨します。 これは NumPy 2.0 の互換性に関して行われている推奨事項と同じです。

Qiskit 1.0 のリリース候補バージョン 1.0.0rc1 は 2024 年 2 月 1 日にリリースされます。 このバージョンに対してパッケージをテストし、できるだけ早く上限要件を外した新しい(互換性のある)バージョンのパッケージをリリースしてください。

Qiskit 1.0 に対するテストの推奨事項

これらの推奨事項は、Qiskit の main ブランチに対して積極的にテストを行う場合と、1.0.0rc1(および必要に応じてそれ以降)のリリース候補に対してテストを行う場合に適用されます。

Qiskit の main ブランチに対する CI の成功をブランチ保護の条件として最初から設定することは推奨しません。Qiskit の変更により PR をマージできなくなる可能性があるためです。 Qiskit のリリース候補がリリースされた後、パッケージのすべての依存関係が Qiskit 1.0 をサポートするようになったら、最新のリリース候補に対する成功をブランチ保護の条件として設定することを 推奨します。これにより、パッケージが Qiskit 1.0 との互換性を維持できます。

パッケージ自体も推移的な依存関係のいずれも qiskit<1 の要件ピンを持っていない場合は、通常通り単一の pip install コマンドでテスト用の仮想環境を作成し、適切に qiskit==1.0.0rc1 または qiskit==git+https://github.com/Qiskit/qiskit.git@main を直接指定してください。 これが完全に有効な環境を確保するための最も確実な方法です。

パッケージの依存グラフ内で qiskit<1 の要件ピンを持つのが自分のパッケージだけである場合は、まず CI スイートで要件ファイルを一時的にパッチして Qiskit 1.0 を許可し、その後これまでと同様に単一ステップで環境をインストールするようにすることも検討できます。 あるいは、一般的な環境アップグレードの以下のルールを使用しつつ、できるだけ早く単一環境の解決方法に切り替えてください。

推移的な依存関係の少なくとも一つが Qiskit 1.0 サポートを許可するリリースバージョンをまだ持っていない場合は、手動で変更を行う必要があります。 試すべき戦略がいくつかあります(推奨度の高い順に):

  • 開発バージョンでピンが緩和されている場合は、問題のある依存関係を独自の main ブランチからインストールして、単一ステップでテスト環境を構築できるようにする。
  • 可能であれば、その依存関係をテスト環境の使用から除外する。
  • 通常通りテスト環境を作成し、その後 Qiskit 1.0 を使用するように手動でオーバーライドする。

既存の環境を手動でアップグレードする

注意

このプロセスは意図的に無効な環境を作成します。そのため、これを使用したテストは有効性が低くなります。テストが通過しているように見えても、パッケージが Qiskit 1.0 と互換性があることを保証するものではありません。環境が自己整合的でなく、有効な環境には存在しないファイルが含まれていたり、オーバーライドされたパッケージの動作が Qiskit 1.0 で変わる可能性があるためです。

備考

依存関係の一つが開発ブランチ上でも qiskit<1 をピンしている場合、Qiskit 1.0 では全く動作しない可能性があり、このためテストが実行できない場合は、互換性が確保されるまで(またはそのために協力するまで)待つ必要があるかもしれません。

既存の環境をインプレースでアップグレードするには、以下の手順に従ってください:

  1. 通常通り環境を作成し、qiskit または qiskit.providers 名前空間を拡張するパッケージがインストールされていないことを確認します。

  2. qiskitqiskit-terra の両方をアンインストールして、どちらも存在しないようにします:

pip uninstall --yes qiskit qiskit-terra

この時点で、環境の site-packages には qiskit ディレクトリが含まれていないはずです。すべての CI 実行でこれを確認する必要はありませんが、ローカルでスクリプトをデバッグしている場合は、以下の手順で確認してください:

  1. 仮想環境の python 内から次のコマンドを実行します:
import site
print(site.getsitepackages())
  1. これらのディレクトリに qiskit ディレクトリが含まれていないことを確認します。含まれている場合は、名前空間を拡張するパッケージがインストールされている可能性が高いため、それらを特定して依存関係を削除してください。

  2. 次のいずれかのコマンドで Qiskit 1.0 の対象バージョンをインストールします:

  • 目的のリリース候補が公開された後:
    pip install 'qiskit==1.0.0rc1'
  • main ブランチの依存関係(@ の後に任意の git リビジョン識別子を指定可能):
    pip install 'git+https://github.com/Qiskit/qiskit.git@main'

これで Qiskit でテスト可能な環境が整いました。import qiskitImportError が発生する場合や、依存関係が見つからない場合は、Qiskit の無効環境保護 に関するセクションのアドバイスを参照してください。

GitHub Actions ワークフローのサンプル

以下のワークフローは、毎晩実行されるスケジュールジョブを設定します。このジョブは Qiskit 1.0 のテスト環境をセットアップし、pytest(または必要なテストステップ)を実行します。

推移的な依存関係に qiskit<1 がないパッケージの場合:

on:
schedule:
- cron: '0 3 * * *'
jobs:
test_main:
name: Test Qiskit main
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Create environment
run: |
set -e
# First ensure the standard tools are up-to-date.
python -m pip install --upgrade pip wheel setuptools
# Note that this resolves everything in a single command.
# If it fails, at least one package likely requires `qiskit<1`.
python -m pip install --upgrade \
-c constraints.txt \
-r requirements-dev.txt \
. \
'git+https://github.com/Qiskit/qiskit.git@main'
- name: Run tests
run: pytest

qiskit<1 をピンする推移的な依存関係が避けられないパッケージの場合、無効な環境を構築します:

on:
schedule:
- cron: '0 3 * * *'
jobs:
test_main:
name: Test Qiskit main
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Create environment
run: |
set -e
python -m pip install --upgrade pip wheel setuptools
# Install the regular test environment.
python -m pip install --upgrade \
-c constraints.txt \
-r requirements-dev.txt \
.
# Uninstall `qiskit` and `qiskit-terra`.
python -m pip uninstall --yes qiskit qiskit-terra
# Install the new version of Qiskit
python -m pip install 'git+https://github.com/Qiskit/qiskit.git@main'
- name: Run tests
run: pytest

tox 設定のサンプル

以下は、Qiskit 1.0 のテスト環境を構築して pytest(または必要なテストステップ)を実行するための tox.ini セクションの例です。

Qiskit 1.0 を有効な環境にインストールすることを妨げるものが何もない場合:

[tox]
minversion = 4.0.0

# This environment section should set up your regular test build.
# We'll extend it after, and this one is just an example.
[testenv]
install_command = pip install -c {toxinidir}/constraints.txt -U {opts} {packages}
deps =
-r{toxinidir}/requirements-dev.txt
commands =
pytest

# This is an override environment to install Qiskit main.
# We're assuming that you have a requirement like `qiskit>=0.45`
# in your packages metadata requirements.
[testenv:qiskit-main]
# Inherit the base dependencies, and add the additional requirement.
deps =
[{testenv}deps]
git+https://github.com/Qiskit/qiskit@main
# All other options, like the `commands` section, are inherited from `testenv`.

パッケージや推移的な依存関係が qiskit<1 への回避不能なピンを持っている場合は、tox が環境の分離とインストール順序について厳格であるため複数の複雑な問題が生じます。このため、上記のセクションと同様に手動での環境構築を使用してテストを行うことを推奨します。 これは tox の正しい動作です(無効な環境を構築すべきではありません)が、すでに無効な環境を構築していることがわかっているため、これらのチェックが邪魔になります。

[tox]
minversion = 4.0.0

# This environment section should set up your regular test build.
# We'll extend it later. This is just an example.
[testenv]
install_command = pip install -c {toxinidir}/constraints.txt -U {opts} {packages}
deps =
-r{toxinidir}/requirements-dev.txt
commands =
pytest

[testenv:qiskit-main]
# Set a sequence of commands to run in the environment after everything has been installed,
# but before the main test suite.
commands_pre =
pip uninstall --yes qiskit qiskit-terra
pip install 'git+https://github.com/Qiskit/qiskit@main'
# All other sections, like the dependencies and the 'commands' section are inherited.

トラブルシューティング

Qiskit 1.0 前後のパッケージング上の変更は複雑で、Pythonの標準ツールである pip では、配布構造の変更をツールに十分に伝えられない部分があり、残念ながらユーザーに問題を引き起こす可能性があります。 Qiskit は無効な環境を検出した場合に、偽陽性なしで即座かつ明確にエラーを出すよう努めています。 エラーメッセージが煩わしく感じるかもしれませんが、私たちの経験上、表面上は動いているように見えて後から細かい問題として現れるよりも、すぐに問題を把握できる方がはるかに良いと考えています。

このセクションでは、発生しうるパッケージングエラーとその解決方法を説明します。

これらの問題のほとんどは Qiskit 固有ではないため、問題のある部分が Qiskit に関係していなくても、以下のアドバイスが参考になるはずです。

import qiskit で "ModuleNotFoundError: No module named 'qiskit'" が表示される

Pythonが Qiskit のインストールを見つけられていません。

Qiskit をインストール済みであることが確かな場合、正しい仮想環境がアクティブになっていない可能性があります。 手順については仮想環境のアクティベートのセクションを参照してください。

Jupyter を使用していてこのエラーが表示される場合は、Jupyter が Qiskit と同じ仮想環境にインストールされているかを確認してください。 Jupyter を終了し、コマンドラインで Qiskit の仮想環境をアクティベートして、pip install jupyterlab(または使用しているノートブックインターフェース)を実行してから、Jupyter を再起動してください。

import qiskit は成功するが、何かをしようとすると "AttributeError: module 'qiskit' has no attribute '...'" が返される

これはおそらく、環境内に古いバージョンの Qiskit と、その名前空間を拡張するパッケージ(古いバージョンの Qiskit Aer や、長らく廃止されている Qiskit IBM Q® Provider など)が共存した状態で、Qiskit がアンインストールされたことが原因です。 最も簡単な対処法は、新しい仮想環境を作成し、最新の廃止されていないパッケージのみをインストールすることです。

新しい仮想環境を作成したばかりであるか、レガシーパッケージが問題でないことが確かな場合は、現在の作業ディレクトリ(Python / Jupyter を起動したときのシェルセッションのディレクトリ)に qiskit という名前のフォルダが含まれていないかを確認してください。 Pythonのデフォルトのルールでは、モジュールを import しようとするとき、検索パスの非常に早い段階で現在の作業ディレクトリを検索するため、同名のディレクトリがあるとインポートの問題を引き起こす可能性があります。

pip がいくつかのパッケージを一緒にインストールすることを拒否する

多くのパッケージを指定して pip install コマンドを実行した後、次のようなエラーが表示される場合があります:

ERROR: Cannot install qiskit-dynamics==0.4.4 and qiskit==1.0.0 because these package versions have conflicting dependencies.

The conflict is caused by:
The user requested qiskit==1.0.0
qiskit-dynamics 0.4.4 depends on qiskit<1.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

これは真の依存関係の競合を表しており、これらのディストリビューションをすべて同時にインストールする有効な方法はありません。

Qiskit 1.0 の文脈では、インストールしようとしているディストリビューションの1つに qiskit<1.0 のような要件が含まれているためと考えられます。 これは、そのディストリビューションの開発者が、Qiskit 1.0 との互換性がない(まだ対応していない)とマークしたことを意味します。

そのディストリビューションの開発者に、Qiskit 1.0 と互換性のある新しいバージョンのリリース時期を(丁重に)尋ねることもできますが、まず彼らがコメントを受け付けている場所に、同様の内容のオープンなイシューやプルリクエストがないか確認してください。 新しいバージョンの準備には時間がかかります。開発者に1か月ほどの余裕を与えてください! それまでは、そのディストリビューションを Qiskit 1.0 と一緒にインストールすることはできません。 そのディストリビューションを引き続き使用するには、新しい仮想環境を作成し、Qiskit 0.45 または 0.46(またはそのパッケージがサポートするバージョン)をそのパッケージと一緒に使用してください。

注意

このエラーが発生した場合、pip install を複数回呼び出して環境を構築しようとしないでください。 それらのコマンドはおそらく失敗しませんが、無効な環境が作成されてしまいます。 その後、このセクションで説明している他のエラーメッセージが表示される可能性があります。

依存関係の競合解決に関するPythonパッケージング機構のドキュメントも参照できます。

pip install コマンドの実行後に pip が成功するがエラーを出力する

pip の出力に次のようなエラーが表示される場合があります:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behavior is the source of the following dependency conflicts.
some-distribution 0.4.4 requires qiskit>=0.44,<1, but you have qiskit 1.0.0 which is incompatible.

先頭の行は通常そのまま表示されます(pip 23.3 時点)が、2行目は問題の内容によって変わり、同様の行が複数表示されることもあります。 pip はその後、エラーメッセージにもかかわらず、要求した操作が成功したことを示す場合があります。

これは環境が競合状態にあり、正しく動作するかどうか確認できないことを意味します。 問題を解決するには、pip からのメッセージのリストを調べて、競合する要件を持つすべてのパッケージが本当に必要かどうかを判断してください。 依存関係間で真の競合が発生することもあります。互換性のない要件を持つ依存関係を分離するために、複数の仮想環境が必要になる場合があります。

最も安全な選択肢は、新しい仮想環境を(真の競合がある場合は複数)作成し、競合している環境を削除することです。

仮想環境をセットアップする際は、必要なすべての依存関係を含む1つの pip install コマンドのみを実行してください。 これが pip で競合のない正しく解決された環境を見つけるための最も確実な方法です。 環境のセットアップ後も競合の問題が続く場合は、それ以上 pip installpip uninstall コマンドを実行しないようにしてください。pip は後続のコマンドで環境の一貫性を保つことを保証していません。

メモ

複数の仮想環境を扱うことに不安を感じる場合でも、Python の開発や使用では複数の仮想環境を持つことはよくあることです。個別のプロジェクトに取り組むために新しい環境を作成することは一般的で良い習慣です。 仮想環境の使用が終わったら、そのディレクトリを削除するだけで済みます。複数の環境を永続的に保持しておく理由はありません。

import qiskitImportError が発生する

import qiskit を実行すると、次のようなエラーが表示される場合があります:

ImportError: Qiskit is installed in an invalid environment that has both Qiskit 1.0+ and an earlier version. You should create a new virtual environment, and ensure that you do not mix dependencies between Qiskit pre-1.0 and post-1.0. Any packages that depend on 'qiskit-terra' are not compatible with Qiskit 1.0 and will need to be updated. Qiskit unfortunately cannot enforce this requirement during environment resolution.

ヒント

このガイドのすべての推奨事項に従って完全に有効な pip install コマンドを実行した場合でも、このエラーメッセージが表示されることがあります。 これはあなたのミスではありませんが、エラーメッセージの内容は正しく、Qiskit を安全に読み込むことができません。

このエラーは、Qiskit 1.0 と以前のバージョンの両方が含まれる無効な環境に Qiskit がインストールされていることを意味します。 具体的には、qiskit-terra ディストリビューションが Qiskit 1.0 と一緒にインストールされている状態です。 インストールされているディストリビューションは pip list を実行することで確認できますが、単に qiskit-terra をアンインストールするだけでは修正できません。

残念ながら、qiskit>=1.0qiskit-terra は競合するディストリビューションであり、両方を同時にインストールすることはできません。 さらに困ったことに、pip のメタデータシステムの制限により、この競合を pip に伝えることができません

このエラーは主に次の2つの状況で発生します:

  • pip install 'qiskit>=1' something-else のようなコマンドを実行し、something-elseqiskit-terra に依存している場合。
  • 既存の環境で pip install -U qiskit を実行しようとした場合。

どちらの場合も、pip が役立つメッセージを返す保証はありません。

ヒント

個々の install コマンドで pipqiskit-terra を禁止させる方法の1つは、qiskit-terra を不可能なバージョンに設定する制約ファイルを使用することです。 例えば、qiskit-terra>=1.0 という行を含む制約ファイルを使用すると、依存関係が qiskit-terra をインストールしようとしても、公開されているバージョンが要件に一致しなくなります。

このようなファイルを GitHub Gist の https://qisk.it/1-0-constraints で提供しており、次のように使用できます:

pip install -c https://qisk.it/1-0-constraints qiskit [other packages]

パッケージが qiskit-terra を必要とする場合、依存関係の解決失敗が表示されます。

Qiskit 1.0 の動作する環境を作成する

どのような経緯であれ、新しい仮想環境を作成する方がはるかに簡単です。

まず、qiskit-terra への依存関係を導入しているパッケージを特定する必要があります。 壊れた環境を使って、PyPI から pipdeptree をインストールします。これは依存関係グラフを生成するツールです:

pip install pipdeptree

qiskit-terraqiskit への依存関係を導入しているパッケージを確認します(それぞれ別のコマンドです):

pipdeptree --reverse --package qiskit-terra
pipdeptree --reverse --package qiskit

出力は次のようになります:

qiskit-terra==0.45.2
└── qiskit-dynamics==0.4.2 [requires: qiskit-terra>=0.23.0]
qiskit==1.0.0
├── qiskit-aer==0.13.2 [requires: qiskit>=0.45.0]
└── qiskit-ibm-provider==0.8.0 [requires: qiskit>=0.45.0]

上記の例では、Qiskit 1.0 との互換性を宣言したディストリビューション(qiskit-aerqiskit-ibm-provider)が2つあり、qiskit-terra への依存関係がまだ残っているものが1つあります。

ヒント

この例はフラットな依存関係構造です。 実際にはこれよりずっと深いツリーが表示される場合があります。 qiskit-terra に直接依存しているパッケージ(インデントが最も少ないもの)が最も問題になりやすいですが、すでに更新済みの他のパッケージの特定の古いバージョンに依存している場合、ツリーの奥にあるパッケージが問題になることもあります。

qiskit-terra への依存関係が見られる場合、いくつかの意味があります:

  • 依存パッケージが古いパッケージで、Qiskit 1.0 をサポートするよう更新されない場合。

    この場合、そのパッケージを Qiskit 1.0 と一緒に使用することはできないため、以前のバージョンの Qiskit を引き続き使用する必要があります。 一般的に、依存パッケージが最新バージョン(環境が新しく、バージョンを固定していないと仮定した場合)であり、qiskit-terra への直接の要件が含まれている場合がこれに当たります。

  • 依存パッケージが積極的にメンテナンスされているが、まだ Qiskit 1.0 をサポートしていない場合。

    この場合、開発者が互換バージョンをリリースするのを待つ必要があります。しばらくお待ちください! 一般的に、インストールコマンドでバージョンを指定していないにもかかわらず、インストールされたディストリビューションが最新バージョンでない場合がこれに当たります。 ディストリビューションの最新リリースバージョンは、https://pypi.org/ のそのページで確認できます。

    pip はおそらく qiskit-terra のみに依存する(おそらく数か月または数年前の)バージョンが見つかるまで、パッケージの古いバージョンを検索していたと考えられます。

    これが上記の例で起きていることです。このドキュメント作成時点では、qiskit-dynamics==0.4.4 が最新リリースバージョンでした。

この環境を複数の pip install コマンドで構築した場合(環境が古く更新されていた場合など)、まず新しい環境を構築する際にすべてのパッケージを1つの pip install コマンドにまとめてインストールしてみてください。 問題が続く場合、使用したいパッケージの少なくとも1つがまだ Qiskit 1.0 をサポートしておらず、pipqiskit>=1/qiskit-terra の競合を知らないため動作すると判断した古いバージョンを探している可能性があります。

代わりに、pipdeptree コマンドを使用してまだ Qiskit 1.0 をサポートしていない依存関係を特定してください。 Qiskit 1.0 環境を構築する際は Qiskit 1.0 をまだサポートしていないパッケージを除外するか、以前のバージョンの Qiskit を引き続き使用してください。 手順については新しい環境を作成するを参照してください。

メモ

このセクションの例は Qiskit 1.0 のリリース前に生成されたものです。

問題となっている「古い」ディストリビューション(qiskit-dynamics)は正しく動作していました。Qiskit 1.0 をサポートしていないことが判明していなかったため、要件にそのことが記載されていたのです。 以前にリリースされたバージョンの要件変更をさかのぼることはできませんし、pip は環境を構築する際に動作するものを探して任意に古いバージョンまで遡って検索します。

Qiskit 0.45 または 0.46 の動作する環境を作成する

Qiskit 0.45 または 0.46 をインストールしようとして壊れた環境になった場合、最も考えられる原因は pip が必須ではないにもかかわらず最新バージョンのパッケージを選択しようとして Qiskit 1.0 をインストールしてしまったことです。 最も簡単な修正方法は、新しい仮想環境を作成してから、必要なすべてのパッケージに明示的な 'qiskit<1' エントリを加えた1つの pip install コマンドを実行することです。 pip がこの依存関係グラフを正常に解決できれば、動作する仮想環境が得られます。 少なくとも1つのディストリビューションが Qiskit 1.0 以上を必要とする場合、pip解決失敗のセクションにあるようなエラーメッセージを表示するはずです。

また、壊れた環境内からQiskit 1.0 の動作する環境を作成するに記載されている pipdeptree コマンドを使用して、qiskit>=1 への明示的な要件を持つディストリビューションを特定することもできます。

開発者で、環境は確かに正しいのにまだエラーが発生する

まず:環境が正しいということを絶対的に確信している必要があります。 Qiskit が壊れた環境を判定するために使用するテストはかなり堅牢です。具体的には、インストール済みパッケージのディストリビューション情報を importlib.metadata に問い合わせ、返されたバージョン番号を確認します。 テストの Qiskit 1.0 側では、古い Qiskit バージョンには存在し Qiskit 1.0 には存在しないセンチネルファイルも確認します。

Qiskit の開発者であれば、古い編集可能インストールの残骸として、古い qiskit.egg-infoqiskit-terra.egg-info(または *.dist-info)ディレクトリがメタパス(sys.meta_path を参照)に残っている可能性があります。 特に、作業ディレクトリに *.egg-info*.dist-info ディレクトリがないか確認してください。 それらがチェックアウトしたリポジトリのルートにある場合、削除しても構いません。最悪の場合でも pip install -e . を再実行する必要が生じる程度ですが、これらは通常 setuptools のビルドプロセスの一部でクリーンアップされないだけなので、その必要すらほとんどありません。

上記の情報が役に立たず、環境が正常であると100%確信している場合(または意図的に壊れた環境をテストしようとしている場合):

  1. 何が起きたか、なぜ環境が正しいと確信しているかを説明するQiskit のイシューを作成して、修正できるようにしてください。
  2. 環境変数 QISKIT_SUPPRESS_1_0_IMPORT_ERROR=1 を設定することで例外を抑制することができます。