I-install ang bagong Qiskit 1.0 package
Gumagamit ang Qiskit 1.0 ng ibang istraktura ng packaging kumpara sa mga nakaraang bersyon ng Qiskit, at malamang na magdulot ito ng mga problema sa mga environment na gumagamit ng mga package na hindi pa handa para sa Qiskit 1.0.
Huwag subukang i-upgrade ang isang existing na Python virtual environment papunta sa Qiskit 1.0 nang in-place.
Hindi na kami gagawa ng katulad na breaking packaging changes sa hinaharap. Isang beses lang itong mangyayari, sa paglabas ng Qiskit 1.0, para maging mas madali ang aming packaging sa hinaharap.
Ang gabay na ito ay nahahati sa mga sumusunod na seksyon. Basahin mo lang ang mga seksyong may kaugnayan sa iyo.
- Dapat basahin ng mga user ang seksyong Para sa mga user.
- Kung nagde-develop o nagma-maintain ka ng isang package na naka-depende sa Qiskit, basahin ang seksyong Para sa mga developer.
- Kung may mga problema ka sa pag-install o pag-import ng Qiskit 1.0, tingnan ang seksyong Troubleshooting.
Kung gusto mong maunawaan ang lumang istraktura ng package at kung bakit ito nagbago, tingnan ang pangkalahatang-ideya ng mga breaking package changes.
Para sa mga user​
Kailangan kang magsimula ng bagong virtual environment para ma-install ang Qiskit 1.0. Napakahirap at madaling magkamali kapag ini-upgrade mo ang isang existing na installation nang in-place papunta sa Qiskit 1.0.
Ginagamit ng mga halimbawa sa seksyong ito ang venv module na bahagi ng Python standard library.
Kung gumagamit ka ng ibang tool, tulad ng virtualenv o conda, tingnan ang dokumentasyon nito para sa tulong.
Para sa mga command sa Linux at macOS, ginagamit ang bash-like syntax. PowerShell ang ginagamit para sa mga command sa Windows.
Gumawa ng bagong environment​
-
Gumawa ng bagong virtual environment sa bawat project directory na ginagawa mo, gamit ang iyong preferred na bersyon ng Python 3.8 o mas bago.
- macOS
- Linux
- Windows
python3 -m venv .venvpython3 -m venv .venvpython -m venv .venv
-
I-activate ang environment.
- macOS
- Linux
- Windows
source .venv/bin/activatesource .venv/bin/activate.venv\Scripts\activate.ps1 -
Mag-install ng mga package ayon sa gusto mo. Gawin ito sa pamamagitan ng isang
pip installcommand lang na may lahat ng dependencies sa loob nito.pip install 'qiskit>=1'Maaari kang magdagdag ng mga karagdagang package bilang mga argumento. Halimbawa:
pip install 'qiskit>=1' jupyterlab pandas matplotlibAng Qiskit 1.0 ay may mga breaking change, kaya ilang package ang minarkahan na hindi pa compatible dito. Dahil dito, maaaring makakita ka ng mga error mula sa
piphanggang hindi pa naglalabas ng mga bagong bersyon ang mga package na iyon. Ang mga lumang bersyon ng mga package ay maaari ring mag-depende sa legacy naqiskit-terrapackage. Ang ganitong mga package ay maaaring hindi mag-return ng mga error kapag pinatakbo mo ang command na ito, ngunit maaaring mag-raise ng error kapag pinatakbo angimport qiskit. Huwag mag-install ng anumang package na direktang naka-depende saqiskit-terra.tipIsang paraan para ipagbawal ng
pipangqiskit-terramula sa mga indibidwal nainstallcommand ay ang paggamit ng constraints file na nag-aatas na angqiskit-terraay nakatakda sa isang imposibleng bersyon. Halimbawa, ang isang constraints file na may linyangqiskit-terra>=1.0ay nangangahulugang kung may dependency na susubukang mag-install ngqiskit-terra, walang nai-publish na bersyon ang magtutugma sa mga requirement.Nagbigay kami ng ganitong file sa isang GitHub Gist sa https://qisk.it/1-0-constraints, na magagamit mo nang ganito:
pip install -c https://qisk.it/1-0-constraints qiskit [other packages]Kung ang isang package ay nangangailangan ng
qiskit-terra, makikita mo ang resolution failure.babalaHuwag mag-install ng mga package na hindi compatible sa Qiskit 1.0 sa virtual environment na ito. Kung kailangan mong gamitin ang ganitong mga package, i-install ang mga ito sa isang hiwalay na virtual environment na may Qiskit 0.45 o 0.46.
Kung mayroon kang existing na environment, maaari mong gamitin ang
pipdeptreepara i-query ang mga requirement ng iyong mga naka-install na package para malaman kung nangangailangan sila ngqiskit<1. Para sa mga nangangailangan ngqiskit<1, maghanap ng mga update na ginagawa itong compatible sa Qiskit 1.0.Kung may mga problema ka, tingnan ang seksyong troubleshooting, o magtanong sa Qiskit Slack. Kung sa tingin mo ay may bug, maaari kang lumikha ng issue laban sa Qiskit.
-
Kung hindi mo pa planong gamitin ang environment ngayon, gamitin ang
deactivatecommand para lumabas dito.
Gamitin ang bagong environment​
Sa tuwing magsisimula ka ng bagong command line session, kailangan mong pumunta sa iyong project directory at "i-activate" ang environment sa pamamagitan ng pagpapatakbo ng activate command:
- macOS
- Linux
- Windows
source .venv/bin/activate
source .venv/bin/activate
.venv\Scripts\activate.ps1
Para sa mga developer​
Kung nagma-maintain ka ng isang package na naka-depende sa Qiskit, gamitin ang impormasyong ito para malaman kung paano tama na ipahayag ang iyong compatibility at mag-test laban sa Qiskit 1.0.
Mga rekomendasyon para sa mga requirement​
Inirerekomenda namin na ang iyong package ay nangangailangan ng qiskit>=0.45,<1 (o iba pang angkop na lower bound) kung hindi ka sigurado kung compatible ang package sa Qiskit 1.0.
Ito ay ang parehong rekomendasyon na ginagawa para sa NumPy 2.0 compatibility.
Ang isang Qiskit 1.0 release candidate, bersyon 1.0.0rc1, ay ilalabas sa ika-1 ng Pebrero 2024. Dapat mong i-test ang iyong package laban dito, at sa lalong madaling panahon, maglabas ng bagong (compatible) na bersyon ng iyong package na may na-unpin na upper requirement nito.
Mga rekomendasyon para sa pag-test laban sa Qiskit 1.0​
Nalalapat ang mga rekomendasyong ito sa proactive na pag-test laban sa Qiskit main branch, at sa pag-test laban sa 1.0.0rc1 (at kung naaangkop, mga susunod pa) release candidate.
Hindi namin inirerekomenda ang branch-protecting sa CI success laban sa Qiskit main branch sa simula dahil ang mga pagbabago sa Qiskit ay maaaring pumigil sa iyo sa pag-merge ng mga PR.
Pagkatapos ng paglabas ng mga Qiskit release candidate, at pagkatapos ma-support ng lahat ng dependencies ng iyong package ang Qiskit 1.0, inirerekomenda namin ang branch-protecting sa tagumpay laban sa pinakabagong release candidate, para matiyak na nananatiling compatible ang package sa Qiskit 1.0.
Kung wala sa iyong package, ni sa alinman sa mga transitive dependency nito, ang may requirement pin sa qiskit<1, dapat kang lumikha ng testing virtual environment tulad ng karaniwan mo, sa isang pip install command, at direktang itukoy ang qiskit==1.0.0rc1 o qiskit==git+https://github.com/Qiskit/qiskit.git@main ayon sa naaangkop.
Ito ang pinaka-maaasahang paraan para matiyak na mayroon kang ganap na valid na environment.
Kung ang tanging bahagi ng dependency graph ng iyong package na may requirement pin sa qiskit<1 ay ang iyong sariling package, maaari mong piliing unang pansamantalang i-patch ng iyong CI suite ang iyong requirements file para payagan ang Qiskit 1.0, at pagkatapos ay i-install ang environment sa isang hakbang tulad ng dati.
Bilang alternatibo, gamitin ang mga sumusunod na panuntunan para sa mga pangkalahatang layunin na pag-upgrade ng environment, ngunit lumipat sa single-environment resolution sa lalong madaling panahon.
Kung hindi pa naglalabas ng release version na nagpapahintulot ng Qiskit 1.0 support ang hindi bababa sa isa sa iyong mga transitive dependency, kailangan mong gumawa ng mga manu-manong pagbabago. Narito ang ilang estratehiya na dapat subukan, sa tinatayang pagkakasunod ng kagustuhan (pinaka-gusto hanggang pinaka-hindi gusto):
- I-install ang problemadong dependency mula sa sarili nitong
mainbranch, kung ang development version nito ay nag-relax na ng pin, para mabuo mo ang test environment sa isang hakbang. - Ibukod ang paggamit ng dependency na iyon mula sa test environment, kung posible.
- Gumawa ng test environment sa parehong paraan ng karaniwan mo, at pagkatapos ay manu-manong i-override ito para gamitin ang Qiskit 1.0.
Manu-manong i-upgrade ang isang existing na environment​
Sadyang lumilikha ng invalid na environment ang prosesong ito. Kaya naman, ang anumang test na gumagamit nito ay hindi gaanong valid. Maaaring lumabas na pumasa ang mga test, ngunit hindi ito ginagarantiyahan na compatible ang package sa Qiskit 1.0. Maaaring mangyari ito dahil ang environment ay hindi self-consistent at maaaring naglalaman ng mga file na wala sa isang valid na environment, o ang behavior ng isang overridden na package ay maaaring magbago sa Qiskit 1.0.
Kung ang isa sa iyong mga dependency ay nag-pi-pin ng qiskit<1 kahit sa kanilang development branch, maaaring hindi ito gumagana sa anumang paraan sa Qiskit 1.0, at kung hindi mapapatakbo ang iyong mga test dahil dito, maaaring kailangan mong hintayin sila (o makipagtulungan sa kanila) para maging compatible.
Para i-upgrade ang isang environment nang in situ, sundin ang mga hakbang na ito:
-
Gumawa ng environment tulad ng karaniwan, at tiyaking walang mga package na nagpapalawak ng
qiskitoqiskit.providersnamespace ang naka-install. -
I-uninstall ang parehong
qiskitatqiskit-terrapara matiyak na wala ang isa man sa kanila:
pip uninstall --yes qiskit qiskit-terra
Sa puntong ito, ang site-packages ng environment ay hindi dapat naglalaman ng qiskit directory. Hindi mo kailangang i-verify ito sa bawat CI run, ngunit kung nagde-debug ka ng script nang lokal, sundin ang mga hakbang na ito para ma-verify:
- Patakbuhin ang sumusunod na command mula sa loob ng
pythonng virtual environment:
import site
print(site.getsitepackages())
-
I-verify na ang mga directory na iyon ay hindi naglalaman ng
qiskitdirectory. Kung naglalaman ang mga ito, malamang na mayroon kang mga namespace-extending na package na naka-install, at dapat mong hanapin at alisin ang dependency. -
I-install ang target na bersyon ng Qiskit 1.0 gamit ang isa sa mga command na ito:
- Pagkatapos ma-publish ang gustong release candidate:
pip install 'qiskit==1.0.0rc1' - Para sa isang
main-branch dependency (o palitan ang anumanggitrevision identifier na gusto mo pagkatapos ng@).pip install 'git+https://github.com/Qiskit/qiskit.git@main'
Mayroon ka na ngayong environment na pinapayagan ka ng Qiskit na mag-test. Kung ang import qiskit ay nagresulta sa ImportError, o kung nahihirapan kang hanapin ang iyong mga dependency, tingnan ang payo sa seksyon tungkol sa invalid-environment protections sa Qiskit.
Mga sample na manu-manong GitHub Actions workflows​
Ang mga sumusunod na workflow ay nag-se-set up ng scheduled job na tatakbo overnight. Ang job na ito ay nag-se-set up ng testing environment para sa Qiskit 1.0 at nagpapatakbo ng pytest (o anumang test steps na kailangan mo).
Para sa isang package na walang transitive dependency na 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
Para sa isang package na may hindi maiiwasang transitive dependency na nag-pi-pin ng qiskit<1, bumuo ng invalid na environment:
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
Sample na tox configuration​
Ang mga sumusunod ay mga halimbawa ng mga seksyon ng tox.ini para bumuo ng testing environment para sa Qiskit 1.0 at magpatakbo ng pytest (o anumang test steps na kailangan mo).
Kung walang pumipigil sa Qiskit 1.0 na ma-install sa isang valid na environment:
[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`.
Kung ang iyong package o isang transitive dependency ay may hindi maiiwasang pin sa qiskit<1, inirerekomenda namin ang paggawa ng testing na ito gamit ang manu-manong pagtatayo ng environment tulad ng sa seksyon sa itaas, dahil ang tox ay nagdudulot ng ilang komplikasyon sa pamamagitan ng pagiging mas mahigpit tungkol sa environment isolation at installation order.
Ito ay tamang behavior ng tox (hindi dapat tayong bumuo ng invalid na environment), ngunit dahil alam na natin na nagtatayo tayo ng invalid na environment, ang mga tsek na ito ay nagiging sagabal.
[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.
Pag-aayos ng mga Problema​
Medyo kumplikado ang mga pagbabago sa packaging sa paligid ng Qiskit 1.0, at hindi sapat ang karaniwang tool na pip ng Python para maihatid nito sa amin ang mga pagbabago sa mga istruktura ng distribusyon, na maaaring magdulot ng mga problema para sa mga gumagamit.
Sinubukan naming gawing mabilis at malinaw ang pagpalya ng Qiskit kapag natukoy nito ang isang hindi wastong environment, nang walang mga maling positibo.
Nauunawaan namin na maaaring mainip ang mga gumagamit sa pagkakita ng mensahe ng error, ngunit sa aming karanasan, mas mabuting malaman agad ang problema kaysa sa mukhang gumagana ang lahat sa ibabaw, tapos mabibigo lang ito sa maingat na paraan sa hinaharap.
Naglalaman ang seksyong ito ng mga error sa packaging na maaaring makita mo, at inilalarawan kung paano ito ayusin.
Karamihan sa mga problemang ito ay hindi natatangi sa Qiskit, kaya malamang na relevant pa rin ang payo, kahit ang mga may problemang bahagi ay hindi nauugnay sa Qiskit.
Sinasabi ng import qiskit na "ModuleNotFoundError: No module named 'qiskit'"​
Hindi mahanap ng Python ang iyong Qiskit installation.
Kung siguradong na-install mo na ang Qiskit, malamang na hindi ka naka-activate sa tamang virtual environment. Tingnan ang seksyon sa pag-activate ng virtual environment para sa mga tagubilin.
Kung gumagamit ka ng Jupyter at nakikita ito, siguraduhing naka-install ang Jupyter sa parehong virtual environment ng Qiskit.
Isara ang Jupyter, i-activate ang Qiskit virtual environment sa command line, patakbuhin ang pip install jupyterlab (o anumang notebook interface ang ginagamit mo), tapos buksan muli ang Jupyter.
Nagtagumpay ang import qiskit, pero nagbabalik ng "AttributeError: module 'qiskit' has no attribute '...'" kapag gumagawa ng kahit ano​
Malamang na ibig sabihin nito ay mayroon kang lumang bersyon ng Qiskit sa iyong environment kasabay ng isang package na pinalawak ang namespace nito (tulad ng mga lumang bersyon ng Qiskit Aer, o ang matagal nang lipas-panahong Qiskit IBM Q® Provider), tapos na-uninstall ang Qiskit. Ang pinakamadaling gawin ay magsimula ng bagong virtual environment, at mag-install lamang ng mga bago, hindi-lipas-panahong package dito.
Kung kakagawa mo lang ng bagong virtual environment, o sigurado kang hindi ang mga legacy package ang problema, siguraduhin na ang iyong kasalukuyang working directory (ang directory kung saan naroroon ang iyong shell session nang inilunsad mo ang Python / Jupyter) ay hindi naglalaman ng folder na may pangalang qiskit.
Ang mga default na panuntunan ng Python ay naghahanap sa kasalukuyang working directory nang maaga sa search path kapag sinusubukang import ang isang module, kaya ang isang directory na may parehong pangalan ay maaaring magdulot ng mga problema sa pag-import.
Tumatanggi ang pip na mag-install ng ilang package nang magkasama​
Pagkatapos patakbuhin ang isang pip install na command na may maraming item, maaaring makakita ka ng error tulad ng:
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
Ito ay nagpapalirip ng isang tunay na conflict sa resolution; walang wastong paraan para i-install ang lahat ng mga distribution na ito nang sabay-sabay.
Sa konteksto ng Qiskit 1.0, malamang ito ay dahil isa sa mga distribution na sinusubukan mong i-install ay naglalaman ng requirement tulad ng qiskit<1.0.
Ibig sabihin nito, minarkahan ng mga developer ng distribution na iyon na hindi pa ito compatible sa Qiskit 1.0.
Maaari kang (magalang na) magtanong sa mga developer na iyon kung kailan sila maglalabas ng bagong bersyon ng kanilang package na compatible sa Qiskit 1.0, ngunit suriin muna kung mayroon silang bukas na issue o pull request na humihiling nito saan man nila tinatanggap ang mga komento. Tandaan na tumatagal ito; pakibigyan ng mga developer ng isang buwan o higit pa para maghanda ng mga bagong bersyon ng kanilang mga distribution! Hanggang noon, hindi mo maaaring i-install ang distribution na iyon kasabay ng Qiskit 1.0. Para mapatuloy ang paggamit ng distribution na iyon, gumawa ng bagong virtual environment at gamitin ang Qiskit 0.45 o 0.46 (o anumang bersyon ang sinusuportahan nito) kasabay ng ibang package na iyon.
Kung nakuha mo ang error na ito, huwag subukang buuin ang environment sa pamamagitan ng paulit-ulit na pagtawag sa pip install.
Malamang na hindi mabibigo ang mga command na iyon, ngunit magagawa mo ang isang hindi wastong environment.
Malamang na makikita mo pagkatapos ang ilan sa iba pang mga mensahe ng error na inilarawan sa seksyong ito.
Maaari ka ring basahin ang dokumentasyon mula sa Python packaging authority tungkol sa conflict resolution.
Nagtatagumpay ang pip ngunit nagpi-print ng mga error pagkatapos patakbuhin ang mga pip install na command​
Maaaring makakita ka ng error sa output ng pip, tulad ng sumusunod:
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.
Ang unang linya ay karaniwang lumalabas nang verbatim (mula sa pip 23.3), ngunit nagbabago ang pangalawang linya depende sa eksaktong problema, at maaaring may ilang linya tulad nito.
Malamang na ipahiwatig ng pip na nagawa nito ang lahat ng gusto mo nang matagumpay, sa kabila ng mensahe ng error.
Ibig sabihin nito ay may conflict ang environment at hindi mo masigurado na gagana ito nang tama.
Para malutas ang problema, suriin ang listahan ng mga mensahe mula sa pip at alamin kung kailangan mo ba ang lahat ng package na may conflicting requirements.
Minsan ay magkakaroon ng tunay na conflict sa pagitan ng mga dependency; maaaring kailanganin mo ng maraming virtual environment para paghiwalayin ang mga dependency na may hindi compatible na requirements.
Ang pinakaligtas na pagpipilian ay magsimula ng bagong virtual environment (o higit sa isa, kung may mga tunay na conflict), tapos burahin ang may conflict.
Kapag nag-set up ng mga virtual environment, magpatakbo ng isang pip install na command lang na kinabibilangan ng lahat ng dependency na kailangan mo.
Ito ang pinaka-maaasahang paraan para mahanap ng pip ang isang maayos na na-resolve na environment na walang mga conflict.
Kung patuloy kang nagkakaroon ng mga problema sa conflict pagkatapos mag-set up ng mga environment, iwasan ang pagpapatakbo ng anumang karagdagang pip install o pip uninstall na command; hindi ginagarantiyahan ng pip na mapapanatiling magkakaugnay ang environment sa mga kasunod na command.
Kung nag-aalala ka tungkol sa pagtatrabaho sa maraming virtual environment, huwag mag-alala — karaniwang ginagamit ng Python development ang ilang virtual environment. Ito ay normal at magandang gawi na gumawa ng mga bago para sa magkahiwalay na proyekto. Kapag tapos ka na sa isang virtual environment, maaari mo na lang tanggalin ang directory nito; walang dahilan para panatilihing permanente ang maraming environment.
Nagpapataas ng ImportError ang import qiskit​
Kapag pinatakbo ang import qiskit, maaaring makakita ka ng error tulad ng:
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.
Maaaring nakapagpatakbo ka ng ganap na wastong pip install na command, sinunod ang lahat ng rekomendasyon sa gabay na ito, at nakita pa rin ang mensahe ng error na ito.
Hindi ito kasalanan mo, ngunit tama pa rin ang mensahe ng error, at hindi maligtas na ma-load ang Qiskit.
Ang ibig sabihin ng error ay naka-install ang Qiskit sa isang hindi wastong environment na kinabibilangan ng parehong Qiskit 1.0 at isang mas lumang bersyon.
Ito ay nailalarawan ng pag-install ng qiskit-terra na distribution kasabay ng Qiskit 1.0.
Maaari mong suriin kung anong mga distribution ang naka-install sa pamamagitan ng pagpapatakbo ng pip list, ngunit hindi mo ito maayos sa simpleng pag-uninstall ng qiskit-terra.
Sa kasamaang palad, ang qiskit>=1.0 at qiskit-terra ay conflicting distributions, at hindi maaaring i-install ang dalawa nang sabay-sabay.
Mas masamang-masama pa, hindi namin maikomunika ang conflict na ito sa pip dahil sa mga limitasyon sa metadata system nito.
Ang error na ito ay madalas na nangyayari sa isa sa dalawang sitwasyon:
- Nagpatakbo ka ng isang bagay tulad ng
pip install 'qiskit>=1' something-else, at angsomething-elseay may requirement saqiskit-terra. - Sinubukan mong patakbuhin ang
pip install -U qiskitsa isang kasalukuyang environment.
Sa parehong kaso, walang garantiya na magbabalik ng kapaki-pakinabang na mensahe ang pip sa iyo.
Isang paraan para hilingin sa pip na ipagbawal ang qiskit-terra mula sa mga indibidwal na install na command ay ang paggamit ng constraints file na nangangailangan na ang qiskit-terra ay nakatakda sa isang imposibleng bersyon.
Halimbawa, ang isang constraints file na naglalaman ng linya qiskit-terra>=1.0 ay nangangahulugang kung ang isang dependency ay susubukang mag-install ng qiskit-terra, walang mga na-publish na bersyon ang tutugma sa mga requirements.
Nagbigay kami ng ganitong file sa isang GitHub Gist sa https://qisk.it/1-0-constraints, na maaari mong gamitin tulad nito:
pip install -c https://qisk.it/1-0-constraints qiskit [other packages]
Kung ang isang package ay nangangailangan ng qiskit-terra, makikita mo ang isang resolution failure.
Gumawa ng gumaganang environment para sa Qiskit 1.0​
Gaano man ito nangyari, mas madali pa ring gumawa ng bagong virtual environment.
Una, kailangan nating alamin kung aling mga package ang nagpapakilala ng dependency sa qiskit-terra.
Gamit ang sirang environment, i-install ang pipdeptree mula sa PyPI. Ito ay isang tool para sa pagbuo ng mga dependency graph:
pip install pipdeptree
Itanong ito kung aling mga package ang nagpapakilala ng mga dependency sa qiskit-terra at qiskit (dalawang magkahiwalay na command ito):
pipdeptree --reverse --package qiskit-terra
pipdeptree --reverse --package qiskit
Ang mga output ay maaaring magmukhang ganito:
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]
Sa halimbawa sa itaas, mayroon kaming dalawang distribution na nagdeklara ng kanilang compatibility sa Qiskit 1.0 (qiskit-aer at qiskit-ibm-provider), at isa na mayroon pa ring dependency sa qiskit-terra.
Ang halimbawang ito ay isang patag na istruktura ng dependency.
Maaaring makakita ka ng mas malalim na tree kaysa dito.
Ang mga package na direktang umaasa sa qiskit-terra (pinakamababang indentation) ang malamang na mga may problema, ngunit ang isa na mas malalim sa tree ay maaaring maging problema kung ito ay umaasa sa isang partikular na lumang bersyon ng ilang ibang package na na-update na.
Ang pagkakita ng dependency sa qiskit-terra ay maaaring mangahulugan ng isa sa ilang bagay:
-
Ang dependent ay isang lumang package, at hindi ito ia-update para suportahan ang Qiskit 1.0.
Sa kasong ito, walang pagkakataon na gamitin ang package sa Qiskit 1.0, at kailangan mong patuloy na gumamit ng nakaraang bersyon ng Qiskit. Karaniwan itong nailalarawan ng dependent na nasa pinakabagong bersyon nito (ipinagpapalagay na bago ang environment, at hindi mo ito pinababa) at may direktang requirement sa
qiskit-terra. -
Ang dependent ay isang package na aktibong pinapanatili, ngunit hindi pa sinusuportahan ang Qiskit 1.0.
Sa kasong ito, kailangan mong hintayin ang mga developer na maglabas ng compatible na bersyon — maging matiyaga! Karaniwan itong nailalarawan ng naka-install na distribution na hindi nasa pinakabagong bersyon nito, kahit na ang iyong command sa pag-install ay hindi nagtukoy ng bersyon. Maaari mong suriin ang pinakabagong release na bersyon ng distribution sa pamamagitan ng paghanap ng pahina nito sa https://pypi.org/.
Malamang na naghanap ang
pipsa mga lumang bersyon ng package hanggang makahanap ito ng isa (maaaring mula ilang buwan o taon na ang nakakaraan) na umasa lamang saqiskit-terra.Ito ang nangyari sa halimbawa sa itaas. Sa oras na nilikha ang dokumentong ito, ang
qiskit-dynamics==0.4.4ang pinakabagong release na bersyon.
Kung binuo mo ang environment na ito mula sa ilang pip install na command (tulad ng kung ang environment ay luma na at na-update), subukan munang i-install ang lahat ng iyong package sa pamamagitan ng isang pip install na command kapag gumawa ka ng bagong environment.
Kung nananatili ang problema, malamang na hindi pa sinusuportahan ng kahit isa sa mga package na gusto mo ang Qiskit 1.0, at naghahanap ang pip ng lumang bersyon na sa tingin niya ay gagana dahil hindi nito alam ang conflict ng qiskit>=1/qiskit-terra.
Sa halip, gamitin ang mga pipdeptree na command para matukoy kung aling mga dependency ang hindi pa sinusuportahan ang Qiskit 1.0.
Ibukod ang anumang package na hindi pa sinusuportahan ang Qiskit 1.0 kapag bumubuo ng Qiskit 1.0 na environment, o patuloy na gumamit ng mas lumang bersyon ng Qiskit.
Tingnan ang Gumawa ng bagong environment para sa mga tagubilin.
Ang halimbawa sa seksyong ito ay nabuo bago pa inilabas ang Qiskit 1.0.
Ang "lumang" distribution na pinag-usapan (qiskit-dynamics) ay kumilos nang tama; hindi pa ito alam na sinusuportahan ang Qiskit 1.0, kaya minarkahan nito iyon sa mga requirements nito.
Hindi posible na i-backdate ang mga pagbabago sa requirements sa mga dating na-release na bersyon, at maghahanap ang pip nang arbitraryong malayo pabalik para makahanap ng isang bagay na gagana kapag bumubuo ng environment.
Gumawa ng gumaganang environment para sa Qiskit 0.45 o 0.46​
Kung mayroon kang sirang environment pagkatapos subukang i-install ang Qiskit 0.45 o 0.46, ang pinaka-malamang na sitwasyon ay nag-install ang pip ng Qiskit 1.0 dahil sinubukan nitong pumili ng pinakabagong mga bersyon ng mga package, kahit hindi ito kinakailangan.
Ang pinakamadaling paraan para ayusin ito ay gumawa ng bagong virtual environment, tapos magpatakbo ng isang pip install na command na kinabibilangan ng lahat ng package na kailangan mo, kasama ang isang tahasang 'qiskit<1' na entry.
Kung matagumpay na na-resolve ng pip ang dependency graph na ito, dapat ay magkaroon ka ng gumaganang virtual environment.
Kung kahit isa sa mga distribution ay nangangailangan ng Qiskit 1.0 o mas mataas, dapat magbigay ang pip ng mensahe ng error na nagpapaliwanag nito, na magmumukhang katulad ng nasa seksyon sa mga nabigang resolution.
Maaari ka ring gumamit ng mga pipdeptree na command na nakalista sa Gumawa ng gumaganang environment para sa Qiskit 1.0 mula sa loob ng sirang environment para alamin kung aling mga distribution ang may tahasang requirement sa qiskit>=1.
Developer ako, sigurado akong tama ang mga environment ko, at nakakakuha pa rin ako ng error​
Una: kailangan mong ganap na sigurado na tama ang iyong mga environment.
Ang test na ginagamit ng Qiskit para matukoy ang sirang environment ay medyo matibay; partikular, nagtatanong ito sa importlib.metadata para sa impormasyon ng distribution sa mga naka-install na package at sinusuri ang mga numero ng bersyon na ibinalik.
Sinusuri rin ng Qiskit 1.0 na bahagi ng test ang mga sentinel file na naroon sa mga lumang bersyon ng Qiskit ngunit wala sa Qiskit 1.0.
Kung isa kang Qiskit developer, posible na mayroon kang mga lumang qiskit.egg-info o qiskit-terra.egg-info (o *.dist-info) na directory na naroroon sa iyong meta path (tingnan ang sys.meta_path), naiwan mula sa mga lumang editable installation.
Sa partikular, suriin ang iyong working directory para sa anumang *.egg-info at *.dist-info na directory.
Kung nasa root ng isa sa iyong mga checked out na repository, maaari mo itong burahin. Ang pinakamasamang maaaring mangyari ay maaaring kailangan mong pip install -e . muli, at kahit iyon ay malamang na hindi, dahil ang mga ito ay karaniwang bahagi lamang ng setuptools na proseso ng build na hindi nalilinis.
Kung hindi nakatulong ang impormasyong nasa itaas at 100% sigurado ka na maayos ang iyong environment (o sadya mong sinusubukan ang isang sirang environment):
- Gumawa ng issue sa Qiskit na nagpapaliwanag kung paano ito nangyari at kung bakit sigurado ka na tama ang environment para maayos namin ito.
- Maaari mong pigilin ang exception sa pamamagitan ng pag-set ng environment variable na
QISKIT_SUPPRESS_1_0_IMPORT_ERROR=1. _1_0_IMPORT_ERROR=1`.
_1_0_IMPORT_ERROR=1`.