Langkau ke kandungan utama

Pasang pakej Qiskit 1.0 yang baharu

Qiskit 1.0 menggunakan struktur pakej yang berbeza berbanding versi Qiskit sebelumnya dan berkemungkinan besar akan menyebabkan masalah dalam persekitaran yang menggunakan pakej yang belum bersedia untuk Qiskit 1.0.

awas

Jangan cuba naik taraf persekitaran maya Python yang sedia ada ke Qiskit 1.0 secara langsung.

Kami tidak akan membuat perubahan pakej yang memecahkan keserasian seperti ini pada masa hadapan. Ini adalah peristiwa sekali sahaja, pada masa pelepasan Qiskit 1.0, khusus supaya cerita pakej kami akan semudah mungkin pada masa hadapan.

Panduan ini dibahagikan kepada bahagian-bahagian berikut. Anda hanya perlu menyemak bahagian yang berkaitan dengan anda.

  • Pengguna perlu membaca bahagian Untuk pengguna.
  • Jika anda membangun atau menyelenggara pakej yang bergantung pada Qiskit, baca bahagian Untuk pembangun.
  • Jika anda menghadapi masalah memasang atau mengimport Qiskit 1.0, semak bahagian Penyelesaian masalah.

Jika anda berminat untuk memahami struktur pakej lama dan sebab ia berubah, semak gambaran keseluruhan perubahan pakej yang memecahkan keserasian.

Untuk pengguna​

Anda mesti memulakan persekitaran maya baharu untuk memasang Qiskit 1.0. Sangat rumit dan mudah terdedah kepada ralat untuk menaik taraf pemasangan sedia ada secara langsung ke Qiskit 1.0.

nota

Contoh dalam bahagian ini menggunakan modul venv yang merupakan sebahagian daripada pustaka standard Python. Jika anda menggunakan alat yang berbeza, seperti virtualenv atau conda, rujuk dokumentasinya untuk mendapatkan bantuan.

Untuk arahan Linux dan macOS, sintaks seperti bash digunakan. PowerShell digunakan untuk arahan Windows.

Cipta persekitaran baharu​

  1. Cipta persekitaran maya baharu dalam setiap direktori projek yang anda kerjakan, menggunakan versi Python 3.8 atau lebih baharu yang anda pilih.

    python3 -m venv .venv
  1. Aktifkan persekitaran tersebut.

    source .venv/bin/activate
  2. Pasang pakej mengikut keperluan. Anda patut melakukan ini dengan menggunakan hanya satu arahan pip install dengan semua kebergantungan di dalamnya.

    pip install 'qiskit>=1'

    Anda boleh memasukkan pakej tambahan secara pilihan dengan menyertakannya sebagai argumen. Contohnya:

    pip install 'qiskit>=1' jupyterlab pandas matplotlib

    Qiskit 1.0 merangkumi perubahan yang memecahkan keserasian, jadi beberapa pakej ditanda sebagai belum serasi dengannya. Oleh itu, anda mungkin akan melihat ralat daripada pip sehingga versi baharu pakej tersebut dikeluarkan. Versi lama pakej mungkin juga bergantung pada pakej legasi qiskit-terra. Pakej sedemikian mungkin tidak mengembalikan ralat semasa menjalankan arahan ini, tetapi mungkin akan menimbulkan ralat semasa menjalankan import qiskit. Anda tidak patut memasang sebarang pakej yang bergantung secara langsung pada qiskit-terra.

    petua

    Salah satu cara untuk meminta pip melarang qiskit-terra daripada arahan install individu adalah dengan menggunakan fail kekangan yang menetapkan qiskit-terra pada versi yang mustahil. Contohnya, fail kekangan yang mengandungi baris qiskit-terra>=1.0 bermakna jika kebergantungan cuba memasang qiskit-terra, tiada versi yang diterbitkan akan memenuhi keperluan tersebut.

    Kami telah menyediakan fail sedemikian dalam GitHub Gist di https://qisk.it/1-0-constraints, yang boleh anda gunakan seperti berikut:

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

    Jika sesebuah pakej memerlukan qiskit-terra, anda akan melihat kegagalan resolusi.

    awas

    Jangan pasang pakej yang tidak serasi dengan Qiskit 1.0 pada persekitaran maya ini. Jika anda perlu menggunakan pakej sedemikian, pasangnya dalam persekitaran maya berasingan dengan Qiskit 0.45 atau 0.46.

    Jika anda mempunyai persekitaran sedia ada, anda boleh menggunakan pipdeptree untuk membuat pertanyaan keperluan pakej yang dipasang bagi melihat sama ada ia memerlukan qiskit<1. Bagi mana-mana yang memerlukan qiskit<1, semak kemaskini yang menjadikannya serasi dengan Qiskit 1.0.

    Jika anda menghadapi masalah, rujuk bahagian penyelesaian masalah, atau tanya di Qiskit Slack. Jika anda rasa ada pepijat, anda boleh membuat isu terhadap Qiskit.

  3. Jika anda tidak merancang untuk menggunakan persekitaran itu segera, gunakan arahan deactivate untuk keluar daripadanya.

Gunakan persekitaran baharu​

Setiap kali anda memulakan sesi baris arahan baharu, anda mesti pergi ke direktori projek anda dan "aktifkan" persekitaran dengan menjalankan arahan activate:

source .venv/bin/activate

Untuk pembangun​

Jika anda menyelenggara pakej yang bergantung pada Qiskit, gunakan maklumat ini untuk mengetahui cara menyatakan keserasian anda dengan betul dan menguji terhadap Qiskit 1.0.

Cadangan untuk keperluan​

Kami mengesyorkan agar pakej anda memerlukan qiskit>=0.45,<1 (atau had bawah lain yang sesuai) jika anda tidak pasti sama ada pakej itu serasi dengan Qiskit 1.0. Ini adalah cadangan yang sama yang dibuat untuk keserasian NumPy 2.0.

Calon pelepasan Qiskit 1.0, versi 1.0.0rc1, akan dikeluarkan pada 1 Februari 2024. Anda patut menguji pakej anda terhadap ini, dan secepat mungkin, keluarkan versi baharu (yang serasi) pakej anda dengan keperluan atasan yang tidak ditetapkan.

Cadangan untuk pengujian terhadap Qiskit 1.0​

Cadangan ini digunakan untuk pengujian secara proaktif terhadap cawangan main Qiskit, dan untuk pengujian terhadap calon pelepasan 1.0.0rc1 (dan kemudian, jika berkenaan).

Kami tidak mengesyorkan perlindungan cawangan pada kejayaan CI terhadap cawangan main Qiskit pada mulanya kerana perubahan Qiskit boleh menghalang anda daripada menggabungkan PR. Selepas pelepasan calon pelepasan Qiskit, dan selepas semua kebergantungan pakej anda menyokong Qiskit 1.0, kami mengesyorkan perlindungan cawangan pada kejayaan terhadap calon pelepasan terkini, bagi memastikan pakej kekal serasi dengan Qiskit 1.0.

Jika bukan pakej anda, mahupun mana-mana kebergantungan transitif anda, mempunyai pin keperluan pada qiskit<1, anda patut mencipta persekitaran maya pengujian seperti biasa, dalam satu arahan pip install, dan secara langsung menyatakan qiskit==1.0.0rc1 atau qiskit==git+https://github.com/Qiskit/qiskit.git@main mengikut kesesuaian. Ini adalah cara paling boleh dipercayai untuk memastikan anda mempunyai persekitaran yang sepenuhnya sah.

Jika satu-satunya komponen graf kebergantungan pakej anda yang mempunyai pin keperluan pada qiskit<1 adalah pakej anda sendiri, anda mungkin mahu suite CI anda terlebih dahulu menampal sementara fail keperluan anda untuk membenarkan Qiskit 1.0, kemudian pasang persekitaran dalam satu langkah seperti sebelumnya. Sebagai alternatif, gunakan peraturan berikut untuk naik taraf persekitaran tujuan umum, tetapi beralih ke resolusi persekitaran tunggal secepat mungkin.

Jika sekurang-kurangnya satu daripada kebergantungan transitif anda belum mempunyai versi pelepasan yang membenarkan sokongan Qiskit 1.0, anda mesti membuat perubahan manual. Terdapat beberapa strategi untuk dicuba, dalam susunan keutamaan kira-kira (paling diutamakan ke paling kurang):

  • Pasang kebergantungan yang bermasalah daripada cawangan main sendiri, jika versi pembangunannya telah melonggarkan pin, supaya anda boleh membina persekitaran ujian dalam satu langkah.
  • Kecualikan penggunaan kebergantungan itu daripada persekitaran ujian, jika boleh.
  • Cipta persekitaran ujian dengan cara yang sama seperti biasanya, kemudian gantikan secara manual untuk menggunakan Qiskit 1.0.

Naik taraf persekitaran sedia ada secara manual​

awas

Proses ini dengan sengaja mencipta persekitaran yang tidak sah. Oleh itu, sebarang ujian yang menggunakannya adalah kurang sah. Ujian mungkin kelihatan lulus, tetapi ini tidak menjamin bahawa pakej itu serasi dengan Qiskit 1.0. Ini boleh berlaku kerana persekitaran tidak konsisten sendiri dan mungkin mengandungi fail yang tidak wujud dalam persekitaran yang sah, atau tingkah laku pakej yang digantikan mungkin berubah dengan Qiskit 1.0.

nota

Jika salah satu kebergantungan anda meletakkan pin qiskit<1 walaupun pada cawangan pembangunan mereka, ia mungkin tidak berfungsi dalam apa jua cara dengan Qiskit 1.0, dan jika ujian anda tidak dapat dijalankan kerana ini, anda mungkin perlu menunggu mereka (atau bekerjasama dengan mereka) untuk menjadi serasi.

Untuk menaik taraf persekitaran secara langsung, ikuti langkah-langkah ini:

  1. Cipta persekitaran seperti biasa, pastikan tiada pakej yang meluaskan ruang nama qiskit atau qiskit.providers yang dipasang.

  2. Nyahpasang kedua-dua qiskit dan qiskit-terra untuk memastikan tiada satu pun yang wujud:

pip uninstall --yes qiskit qiskit-terra

Pada ketika ini, site-packages persekitaran tidak patut mengandungi direktori qiskit. Anda tidak perlu mengesahkan ini pada setiap jalankan CI, tetapi jika anda menyahpepijat skrip secara tempatan, ikuti langkah-langkah ini untuk mengesahkan:

  1. Jalankan arahan berikut dari dalam python persekitaran maya:
import site
print(site.getsitepackages())
  1. Sahkan bahawa direktori-direktori tersebut tidak mengandungi direktori qiskit. Jika ya, anda mungkin mempunyai pakej yang meluaskan ruang nama yang dipasang, dan anda patut mencari serta membuang kebergantungan tersebut.

  2. Pasang versi sasaran Qiskit 1.0 dengan salah satu arahan berikut:

  • Selepas calon pelepasan yang dikehendaki diterbitkan:
    pip install 'qiskit==1.0.0rc1'
  • Untuk kebergantungan cawangan main (atau gantikan pengecam semakan git yang anda sukai selepas @).
    pip install 'git+https://github.com/Qiskit/qiskit.git@main'

Anda kini mempunyai persekitaran yang Qiskit benarkan anda untuk menguji dalamnya. Jika import qiskit menghasilkan ImportError, atau jika anda bergelut untuk mencari kebergantungan anda, lihat nasihat dalam bahagian tentang perlindungan persekitaran tidak sah dalam Qiskit.

Contoh aliran kerja GitHub Actions manual​

Aliran kerja berikut menyediakan tugas berjadual untuk dijalankan pada waktu malam. Tugas ini menyediakan persekitaran pengujian untuk Qiskit 1.0 dan menjalankan pytest (atau langkah ujian apa pun yang anda perlukan).

Untuk pakej yang tidak mempunyai kebergantungan transitif 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

Untuk pakej yang mempunyai kebergantungan transitif yang tidak dapat dielakkan yang meletakkan pin qiskit<1, bina persekitaran yang tidak sah:

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

Contoh konfigurasi tox​

Berikut adalah contoh bahagian tox.ini untuk membina persekitaran pengujian bagi Qiskit 1.0 dan menjalankan pytest (atau langkah ujian apa pun yang anda perlukan).

Jika tiada yang menghalang Qiskit 1.0 daripada dipasang dalam persekitaran yang sah:

[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`.

Jika pakej anda atau kebergantungan transitif mempunyai pin yang tidak dapat dielakkan pada qiskit<1, kami mengesyorkan melakukan pengujian ini menggunakan pembinaan persekitaran manual seperti dalam bahagian di atas, kerana tox memperkenalkan beberapa kerumitan dengan menjadi lebih ketat tentang pengasingan persekitaran dan susunan pemasangan. Ini adalah tingkah laku yang betul oleh tox (kita tidak patut membina persekitaran yang tidak sah), tetapi kerana kita sudah tahu kita sedang membina persekitaran yang tidak sah, pemeriksaan ini menghalang.

[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.

Penyelesaian masalah​

Perubahan pakej seputar Qiskit 1.0 agak rumit, dan alat standard Python pip tidak cukup kaya dalam beberapa aspek untuk kami menyampaikan perubahan dalam struktur pengedaran kepadanya, yang malangnya mungkin menyebabkan masalah kepada pengguna. Kami telah cuba menjadikan Qiskit gagal dengan cepat dan lantang jika ia mengesan persekitaran yang tidak sah, tanpa positif palsu. Kami faham bahawa pengguna mungkin mendapati mesej ralat itu menjengkelkan, tetapi berdasarkan pengalaman kami, jauh lebih baik untuk mengetahui masalah itu dengan segera daripada sesuatu kelihatan berfungsi di permukaan, tetapi akhirnya gagal secara halus pada masa hadapan.

Bahagian ini mengandungi ralat pakej yang mungkin anda lihat, dan menerangkan cara menyelesaikannya.

Kebanyakan masalah ini bukan unik kepada Qiskit, jadi nasihat ini mungkin relevan, walaupun bahagian yang bermasalah tidak berkaitan dengan Qiskit.

import qiskit memaparkan "ModuleNotFoundError: No module named 'qiskit'"​

Python tidak dapat mencari pemasangan Qiskit anda.

Jika anda pasti telah memasang Qiskit, anda mungkin tidak mempunyai persekitaran maya yang betul yang diaktifkan. Lihat bahagian tentang mengaktifkan persekitaran maya untuk arahan.

Jika anda menggunakan Jupyter dan melihat ini, pastikan Jupyter dipasang ke dalam persekitaran maya yang sama dengan Qiskit. Keluar dari Jupyter, aktifkan persekitaran maya Qiskit pada baris arahan, jalankan pip install jupyterlab (atau antara muka notebook yang anda gunakan), kemudian buka semula Jupyter.

import qiskit berjaya, tetapi cuba melakukan apa-apa mengembalikan "AttributeError: module 'qiskit' has no attribute '...'"​

Ini berkemungkinan bermakna persekitaran anda mempunyai versi Qiskit lama di dalamnya bersama pakej yang meluaskan ruang namanya (seperti versi lama Qiskit Aer, atau Qiskit IBM Q® Provider yang sudah lapuk), kemudian Qiskit dinyahpasang. Perkara termudah yang perlu dilakukan adalah memulakan persekitaran maya baharu, dan hanya memasang pakej terkini yang tidak lapuk ke dalamnya.

Jika anda baru sahaja memulakan persekitaran maya baharu, atau anda pasti pakej legasi bukan masalahnya, pastikan direktori kerja semasa anda (direktori sesi shell anda semasa anda melancarkan Python / Jupyter) tidak mengandungi folder bernama qiskit. Peraturan lalai Python mencari direktori kerja semasa sangat awal dalam laluan carian semasa cuba import sesuatu modul, jadi direktori dengan nama pendua boleh menyebabkan masalah import.

pip enggan memasang beberapa pakej bersama-sama​

Selepas menjalankan arahan pip install dengan banyak item, anda mungkin melihat ralat seperti:

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

Ini menggambarkan konflik resolusi yang sebenar; tiada cara yang sah untuk memasang semua pengedaran ini pada masa yang sama.

Dalam konteks Qiskit 1.0, ini berkemungkinan kerana salah satu pengedaran yang anda cuba pasang mengandungi keperluan seperti qiskit<1.0. Ini bermakna pembangun pengedaran tersebut telah menandakannya sebagai tidak (lagi) serasi dengan Qiskit 1.0.

Anda boleh (dengan sopan) bertanya kepada pembangun tersebut bila mereka akan mengeluarkan versi baharu pakej mereka yang serasi dengan Qiskit 1.0, tetapi terlebih dahulu semak sama ada mereka tidak mempunyai isu atau permintaan tarik terbuka yang sudah meminta ini di mana pun mereka menerima komen. Ingatlah bahawa ini mengambil masa; sila beri pembangun sebulan lebih kurang untuk menyediakan versi baharu pengedaran mereka! Sehingga itu, anda tidak boleh memasang pengedaran tersebut bersama Qiskit 1.0. Untuk terus menggunakan pengedaran tersebut, cipta persekitaran maya baharu dan gunakan Qiskit 0.45 atau 0.46 (atau versi yang disokongnya) bersama pakej lain itu.

awas

Jika anda mendapat ralat ini, jangan cuba membina persekitaran dengan memanggil pip install beberapa kali. Arahan-arahan tersebut mungkin tidak gagal, tetapi anda akan mencipta persekitaran yang tidak sah. Anda kemudian mungkin akan melihat beberapa mesej ralat lain yang diterangkan dalam bahagian ini.

Anda juga boleh membaca dokumentasi daripada Python packaging authority tentang resolusi konflik.

pip berjaya tetapi mencetak ralat selepas menjalankan arahan pip install​

Anda mungkin melihat ralat dalam output pip, seperti yang berikut:

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.

Baris pertama biasanya muncul secara verbatim (setakat pip 23.3), tetapi baris kedua berubah bergantung pada masalah yang tepat, dan mungkin terdapat beberapa baris seperti itu. pip kemudian kemungkinan akan menunjukkan bahawa ia berjaya melakukan apa yang anda mahu, walaupun ada mesej ralat.

Ini bermakna persekitaran berada dalam konflik dan anda tidak boleh memastikan ia akan berfungsi dengan betul. Untuk menyelesaikan masalah, periksa senarai mesej daripada pip dan tentukan sama ada anda memerlukan semua pakej yang mempunyai keperluan bercanggah. Kadangkala akan ada konflik sebenar antara kebergantungan; anda mungkin memerlukan beberapa persekitaran maya untuk mengasingkan kebergantungan yang mempunyai keperluan tidak serasi.

Pilihan paling selamat adalah memulakan persekitaran maya baharu (atau lebih daripada satu, jika ada konflik sebenar), kemudian padam yang berada dalam konflik.

Semasa menyediakan persekitaran maya, jalankan hanya satu arahan pip install yang merangkumi semua kebergantungan yang anda perlukan. Ini adalah cara paling boleh dipercayai untuk pip mencari persekitaran yang diselesaikan dengan betul tanpa konflik. Jika anda terus menghadapi masalah dengan konflik selepas menyediakan persekitaran, elakkan menjalankan arahan pip install atau pip uninstall seterusnya; pip tidak menjamin untuk memastikan persekitaran kekal koheren pada arahan berikutnya.

nota

Jika anda bimbang tentang bekerja dengan beberapa persekitaran maya, yakinlah bahawa pembangunan dan penggunaan Python sering melibatkan beberapa persekitaran maya. Adalah perkara biasa dan amalan baik untuk mencipta yang baharu bagi bekerja pada projek yang berasingan. Apabila anda selesai dengan sesebuah persekitaran maya, anda boleh memadamnya sahaja; tiada sebab untuk menyimpan beberapa persekitaran secara kekal.

import qiskit menimbulkan ImportError​

Semasa menjalankan import qiskit, anda mungkin melihat ralat seperti:

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.

petua

Anda mungkin telah menjalankan arahan pip install yang sepenuhnya sah, mengikuti semua cadangan dalam panduan ini, dan masih melihat mesej ralat ini. Ini bukan kesalahan anda, tetapi mesej ralat itu masih betul, dan Qiskit tidak dapat dimuatkan dengan selamat.

Ralat tersebut bermakna Qiskit dipasang dalam persekitaran yang tidak sah yang merangkumi kedua-dua Qiskit 1.0 dan versi sebelumnya. Ini dicirikan oleh pengedaran qiskit-terra yang dipasang bersama Qiskit 1.0. Anda boleh menyemak pengedaran yang dipasang dengan menjalankan pip list, tetapi anda tidak boleh membetulkan ini dengan hanya menyahpasang qiskit-terra.

Malangnya, qiskit>=1.0 dan qiskit-terra adalah pengedaran yang bercanggah, dan tidak boleh dipasang bersama-sama. Lebih malang lagi, kami tidak dapat menyampaikan konflik ini kepada pip kerana had dalam sistem metadatanya.

Ralat ini paling kerap timbul dalam salah satu daripada dua situasi:

  • Anda menjalankan sesuatu seperti pip install 'qiskit>=1' something-else, dan something-else mempunyai keperluan pada qiskit-terra.
  • Anda cuba menjalankan pip install -U qiskit dalam persekitaran sedia ada.

Dalam kedua-dua kes ini, tiada jaminan bahawa pip akan mengembalikan mesej yang berguna kepada anda.

petua

Salah satu cara untuk meminta pip melarang qiskit-terra daripada arahan install individu adalah dengan menggunakan fail kekangan yang menetapkan qiskit-terra pada versi yang mustahil. Contohnya, fail kekangan yang mengandungi baris qiskit-terra>=1.0 bermakna jika kebergantungan cuba memasang qiskit-terra, tiada versi yang diterbitkan akan memenuhi keperluan tersebut.

Kami telah menyediakan fail sedemikian dalam GitHub Gist di https://qisk.it/1-0-constraints, yang boleh anda gunakan seperti berikut:

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

Jika sesebuah pakej memerlukan qiskit-terra, anda akan melihat kegagalan resolusi.

Cipta persekitaran yang berfungsi untuk Qiskit 1.0​

Tidak kira bagaimana ini berlaku, adalah lebih mudah untuk membuat persekitaran maya baharu.

Pertama, kita perlu mengetahui pakej mana yang memperkenalkan kebergantungan pada qiskit-terra. Menggunakan persekitaran yang rosak, pasang pipdeptree daripada PyPI. Ini adalah alat untuk menjana graf kebergantungan:

pip install pipdeptree

Tanya ia pakej mana yang memperkenalkan kebergantungan pada qiskit-terra dan qiskit (ini adalah dua arahan berasingan):

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

Outputnya mungkin kelihatan seperti:

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]

Dalam contoh di atas, kita mempunyai dua pengedaran yang telah mengisytiharkan diri serasi dengan Qiskit 1.0 (qiskit-aer dan qiskit-ibm-provider), dan satu yang masih mempunyai kebergantungan pada qiskit-terra.

petua

Contoh ini adalah struktur kebergantungan rata. Anda mungkin melihat pokok yang jauh lebih dalam daripada ini. Pakej yang bergantung secara langsung pada qiskit-terra (indentasi paling rendah) kemungkinan besar adalah yang bermasalah, tetapi satu yang lebih jauh ke bawah pokok boleh menjadi bermasalah jika ia bergantung pada versi lama tertentu bagi pakej lain yang telah pun dikemaskini.

Melihat kebergantungan pada qiskit-terra boleh bermakna salah satu daripada beberapa perkara:

  • Pakej yang bergantung adalah pakej lama, dan tidak akan dikemaskini untuk menyokong Qiskit 1.0.

    Dalam kes ini, tiada kemungkinan untuk menggunakan pakej tersebut dengan Qiskit 1.0, dan anda perlu terus menggunakan versi Qiskit yang sebelumnya. Biasanya ini dicirikan oleh pakej yang bergantung berada pada versi terbarunya (dengan mengandaikan persekitaran adalah baharu, dan anda tidak meletakkan pin pada versi yang lebih rendah) dan mempunyai keperluan langsung pada qiskit-terra.

  • Pakej yang bergantung adalah pakej yang diselenggara secara aktif, tetapi belum menyokong Qiskit 1.0.

    Dalam kes ini, anda perlu menunggu pembangun mengeluarkan versi yang serasi — sila bersabar! Biasanya ini dicirikan oleh pengedaran yang dipasang bukan berada pada versi terbarunya, walaupun arahan pemasangan anda tidak menentukan versi. Anda boleh menyemak versi pelepasan terkini pengedaran dengan mencari halamannya di https://pypi.org/.

    pip kemungkinan mencari versi lama pakej sehingga ia menemukan satu (mungkin dari bulan atau tahun lalu) yang hanya bergantung pada qiskit-terra.

    Inilah yang berlaku dalam contoh di atas. Pada masa dokumen ini dibuat, qiskit-dynamics==0.4.4 adalah versi pelepasan terkini.

Jika anda membina persekitaran ini daripada beberapa arahan pip install (seperti jika persekitaran itu lama dan telah dikemaskini), cuba dahulu memasang semua pakej anda menggunakan satu arahan pip install semasa anda membina persekitaran baharu. Jika masalah berterusan, sekurang-kurangnya satu daripada pakej yang anda mahu mungkin belum menyokong Qiskit 1.0 lagi, dan pip sedang mencari versi lama yang ia percaya akan berfungsi kerana ia tidak tahu tentang konflik qiskit>=1/qiskit-terra.

Sebaliknya, gunakan arahan pipdeptree untuk mengenal pasti kebergantungan yang belum menyokong Qiskit 1.0. Kecualikan sebarang pakej yang belum menyokong Qiskit 1.0 semasa membina persekitaran Qiskit 1.0, atau terus gunakan versi Qiskit yang sebelumnya. Lihat Cipta persekitaran baharu untuk arahan.

nota

Contoh dalam bahagian ini dijana sebelum Qiskit 1.0 dikeluarkan.

Pengedaran "lama" yang dimaksudkan (qiskit-dynamics) berkelakuan dengan betul; ia belum diketahui menyokong Qiskit 1.0 lagi, jadi ia menandakan perkara itu dalam keperluannya. Tidak mungkin untuk mengubah keperluan dengan tarikh ke versi yang telah dikeluarkan sebelumnya, dan pip akan mencari sejauh mungkin ke belakang untuk menemukan sesuatu yang berfungsi semasa membina persekitaran.

Cipta persekitaran yang berfungsi untuk Qiskit 0.45 atau 0.46​

Jika anda mempunyai persekitaran yang rosak selepas cuba memasang Qiskit 0.45 atau 0.46, situasi yang paling berkemungkinan adalah bahawa pip memasang Qiskit 1.0 kerana ia cuba memilih versi terkini pakej, walaupun ia tidak diperlukan. Cara termudah untuk membetulkannya adalah dengan mencipta persekitaran maya baharu, kemudian menjalankan satu arahan pip install yang merangkumi semua pakej yang anda perlukan, ditambah entri eksplisit 'qiskit<1'. Jika pip berjaya menyelesaikan graf kebergantungan ini, anda sepatutnya mempunyai persekitaran maya yang berfungsi. Jika sekurang-kurangnya satu pengedaran memerlukan Qiskit 1.0 atau lebih tinggi, pip sepatutnya memberikan anda mesej ralat yang menjelaskan ini, yang kelihatan seperti yang ada dalam bahagian tentang resolusi yang gagal.

Anda juga boleh menggunakan arahan pipdeptree yang disenaraikan dalam Cipta persekitaran yang berfungsi untuk Qiskit 1.0 dari dalam persekitaran yang rosak untuk menentukan pengedaran yang mempunyai keperluan eksplisit pada qiskit>=1.

Saya seorang pembangun, persekitaran saya pasti betul, dan saya masih mendapat ralat​

Pertama: anda mesti benar-benar pasti bahawa persekitaran anda betul. Ujian yang digunakan Qiskit untuk menentukan persekitaran yang rosak adalah cukup teguh; khususnya, ia membuat pertanyaan kepada importlib.metadata untuk maklumat pengedaran tentang pakej yang dipasang dan menyemak nombor versi yang dikembalikan. Bahagian Qiskit 1.0 dalam ujian juga menyemak fail sentinel yang ada dalam versi Qiskit lama dan bukan Qiskit 1.0.

Jika anda adalah pembangun Qiskit, ada kemungkinan anda mempunyai direktori qiskit.egg-info atau qiskit-terra.egg-info lama (atau *.dist-info) yang terdapat pada laluan meta anda (lihat sys.meta_path), tinggalan daripada pemasangan boleh edit lama. Khususnya, semak direktori kerja anda untuk sebarang direktori *.egg-info dan *.dist-info. Jika ia berada di akar salah satu repositori yang anda daftar keluar, anda boleh memadamnya. Perkara terburuk yang boleh berlaku adalah anda mungkin perlu menjalankan pip install -e . semula, dan walaupun itu tidak mungkin, kerana ini biasanya hanya merupakan sebahagian daripada proses binaan setuptools yang tidak dibersihkan.

Jika maklumat di atas tidak membantu anda dan anda 100% pasti persekitaran anda baik (atau anda sengaja cuba menguji persekitaran yang rosak):

  1. Cipta isu dalam Qiskit menerangkan bagaimana ini berlaku dan mengapa anda pasti persekitaran itu betul supaya kami dapat membetulkannya.
  2. Anda boleh menekan pengecualian dengan menetapkan pemboleh ubah persekitaran QISKIT_SUPPRESS_1_0_IMPORT_ERROR=1.
Source: IBM Quantum docs — updated 27 Apr 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of 11 Mac 2026