Instalace nového balíčku Qiskit 1.0
Qiskit 1.0 používá jinou strukturu balíčků než předchozí verze Qisku a pravděpodobně způsobí problémy v prostředích, která využívají balíčky, jež nejsou připraveny na Qiskit 1.0.
Nepokoušej se upgradovat stávající virtuální prostředí Pythonu na Qiskit 1.0 přímo na místě.
Podobné zásadní změny v balíčcích v budoucnu neplánujeme. Jde o jednorázovou událost při vydání Qiskit 1.0, a to právě proto, aby správa balíčk ů byla v budoucnu co nejjednodušší.
Tato příručka je rozdělena do následujících sekcí. Stačí si přečíst pouze ty sekce, které jsou pro tebe relevantní.
- Uživatelé si mají přečíst sekci Pro uživatele.
- Pokud vyvíjíš nebo spravuješ balíček, který závisí na Qiskit, přečti si sekci Pro vývojáře.
- Pokud narazíš na problémy při instalaci nebo importu Qiskit 1.0, projdi si sekci Řešení problémů.
Pokud tě zajímá stará struktura balíčků a důvody její změny, podívej se na přehled zásadních změn v balíčcích.
Pro uživatele
Pro instalaci Qiskit 1.0 musíš vytvořit nové virtuální prostředí. Upgradovat existující instalaci na Qiskit 1.0 přímo na místě je velmi komplikované a náchylné k chybám.
Příklady v této sekci používají modul venv, který je součástí standardní knihovny Pythonu.
Pokud používáš jiný nástroj, například virtualenv nebo conda, nahlédni do jeho dokumentace.
Pro příkazy v Linuxu a macOS se používá syntaxe podobná Bashi. Pro příkazy ve Windows se používá PowerShell.
Vytvoření nového prostředí
-
Vytvoř nové virtuální prostředí v každém adresáři projektu, na kterém pracuješ, pomocí preferované verze Pythonu 3.8 nebo novější.
- macOS
- Linux
- Windows
python3 -m venv .venvpython3 -m venv .venvpython -m venv .venv
-
Aktivuj prostředí.
- macOS
- Linux
- Windows
source .venv/bin/activatesource .venv/bin/activate.venv\Scripts\activate.ps1 -
Nainstaluj požadované balíčky. Doporučujeme to provést pomocí jediného příkazu
pip installse všemi závislostmi najednou.pip install 'qiskit>=1'Volitelně můžeš přidat další balíčky jako argumenty. Například:
pip install 'qiskit>=1' jupyterlab pandas matplotlibQiskit 1.0 obsahuje zásadní změny, takže několik balíčků je označeno jako dosud nekompatibilních. Proto se mohou zobrazovat chyby z
pip, dokud nebudou vydány nové verze těchto balíčků. Staré verze balíčků mohou záviset na starším balíčkuqiskit-terra. Takové balíčky nemusí hlásit chyby při spuštění tohoto příkazu, ale mohou vyvolat chybu při spuštěníimport qiskit. Neinstaluj žádné balíčky, které přímo závisí naqiskit-terra.tipJedním ze způsobů, jak zakázat
pipinstalovatqiskit-terrapři jednotlivých příkazechinstall, je použít soubor omezení, který nastavíqiskit-terrana nemožnou verzi. Například soubor omezení obsahující řádekqiskit-terra>=1.0způsobí, že pokud se nějaká závislost pokusí nainstalovatqiskit-terra, žádná publikovaná verze nebude splňovat požadavky.Takový soubor jsme poskytli jako GitHub Gist na adrese https://qisk.it/1-0-constraints, který lze použít takto:
pip install -c https://qisk.it/1-0-constraints qiskit [other packages]Pokud balíček vyžaduje
qiskit-terra, zobrazí se selhání řešení závislostí.pozorDo tohoto virtuálního prostředí neinstaluj balíčky, které jsou nekompatibilní s Qiskit 1.0. Pokud takové balíčky potřebuješ použít, nainstaluj je do samostatného virtuálního prostředí s Qiskit 0.45 nebo 0.46.
Pokud máš stávající prostředí, můžeš použít
pipdeptreek dotazování na požadavky nainstalovaných balíčků a zjistit, zda vyžadujíqiskit<1. U těch, které vyžadujíqiskit<1, zkontroluj dostupné aktualizace zajišťující kompatibilitu s Qiskit 1.0.Pokud narazíš na problémy, nahlédni do sekce řešení problémů, nebo se zeptej na Qiskit Slack. Pokud se domníváš, že jde o chybu, můžeš vytvořit hlášení problému v Qiskit.
-
Pokud prostředí nehodláš ihned používat, opusť ho příkazem
deactivate.
Použití nového prostředí
Pokaždé, když zahájíš novou relaci příkazové řádky, musíš přejít do adresáře projektu a prostředí „aktivovat" spuštěním příkazu activate:
- macOS
- Linux
- Windows
source .venv/bin/activate
source .venv/bin/activate
.venv\Scripts\activate.ps1
Pro vývojáře
Pokud spravuješ balíček, který závisí na Qiskitu, najdeš zde informace o tom, jak správně vyjádřit kompatibilitu a testovat vůči Qiskitu 1.0.
Doporučení pro požadavky
Doporučujeme, aby tvůj balíček vyžadoval qiskit>=0.45,<1 (nebo jiný vhodný spodní limit), pokud si nejsi jistý/jistá, zda je balíček kompatibilní s Qiskitem 1.0.
Toto je stejné doporučení, jaké bylo vydáno pro kompatibilitu s NumPy 2.0.
Release candidate Qiskitu 1.0, verze 1.0.0rc1, bude vydán 1. února 2024. Měl(a) bys svůj balíček otestovat vůči němu a co nejdříve vydat novou (kompatibilní) verzi balíčku s odstraněným horním omezením požadavků.
Doporučení pro testování vůči Qiskitu 1.0
Tato doporučení platí pro proaktivní testování vůči větvi main Qiskitu i pro testování vůči release candidatovi 1.0.0rc1 (a případně pozdějším).
Nedoporučujeme zpočátku chránit větve na základě úspěchu CI vůči větvi main Qiskitu, protože změny v Qiskitu by ti mohly bránit ve slučování PR.
Po vydání release candidatů Qiskitu a poté, co všechny závislosti tvého balíčku budou podporovat Qiskit 1.0, doporučujeme chránit větve na základě úspěchu vůči nejnovějšímu release candidatovi, aby byl balíček i nadále kompatibilní s Qiskitem 1.0.
Pokud ani tvůj balíček, ani žádná z jeho tranzitivních závislostí nemá požadavek s omezením qiskit<1, měl(a) bys vytvořit testovací virtuální prostředí jako obvykle – jedním příkazem pip install – a přímo zadat qiskit==1.0.0rc1 nebo qiskit==git+https://github.com/Qiskit/qiskit.git@main podle potřeby.
Toto je nejspolehlivější způsob, jak zajistit zcela platné prostředí.
Pokud je jediným prvkem grafu závislostí tvého balíčku, který má omezení qiskit<1, právě tvůj vlastní balíček, může být vhodné nechat CI sadu nejprve dočasně upravit soubor požadavků tak, aby Qiskit 1.0 byl povolen, a poté nainstalovat prostředí najednou jako dříve.
Alternativně použij níže uvedená pravidla pro obecné upgrady prostředí, ale přejdi na jednokrokové sestavení prostředí, jakmile to bude možné.
Pokud alespoň jedna z tranzitivních závislostí dosud nemá vydanou verzi, která by umožňovala podporu Qiskitu 1.0, musíš provést ruční úpravy. Existuje několik strategií, které lze vyzkoušet, přibližně v pořadí od nejpreferovanější po nejméně preferovanou:
- Nainstaluj problematickou závislost z její vlastní větve
main, pokud vývojová verze dané závislosti omezení uvolnila, abyste mohli sestavit testovací prostředí v jediném kroku. - Vyluč použití dané závislosti z testovacího prostředí, pokud je to možné.
- Vytvoř testovací prostředí stejným způsobem jako obvykle a poté ho ručně přepni na Qiskit 1.0.
Ruční upgrade existujícího prostředí
Tento postup záměrně vytváří neplatné prostředí. Proto je každý test, který ho využívá, méně spolehlivý. Testy mohou zdánlivě procházet, ale nezaručuje to kompatibilitu balíčku s Qiskitem 1.0. Může k tomu dojít, protože prostředí není konzistentní a může obsahovat soubory, které v platném prostředí neexistují, nebo se chování přepsaného balíčku může s Qiskitem 1.0 změnit.
Pokud jedna z tvých závislostí omezuje qiskit<1 i ve své vývojové větvi, nemusí s Qiskitem 1.0 vůbec fungovat. Pokud kvůli tomu nelze spustit tvé testy, možná budeš muset počkat, než se tato závislost stane kompatibilní (nebo s jejími autory spolupracovat).
Chceš-li upgradovat prostředí na místě, postupuj takto:
-
Vytvoř prostředí jako obvykle a ujisti se, že nejsou nainstalované žádné balíčky, které rozšiřují jmenný prostor
qiskitneboqiskit.providers. -
Odinstaluj
qiskitiqiskit-terra, aby nebyl přítomen ani jeden:
pip uninstall --yes qiskit qiskit-terra
V tuto chvíli by adresář site-packages prostředí neměl obsahovat složku qiskit. Při každém spuštění CI to nemusíš ověřovat, ale pokud ladíš skript lokálně, ověř to pomocí těchto kroků:
- Spusť následující příkaz z prostředí
pythonvirtuálního prostředí:
import site
print(site.getsitepackages())
-
Ověř, že tyto adresáře neobsahují složku
qiskit. Pokud ji obsahují, pravděpodobně máš nainstalované balíčky rozšiřující jmenný prostor – najdi je a odstraň příslušnou závislost. -
Nainstaluj cílovou verzi Qiskitu 1.0 jedním z těchto příkazů:
- Po zveřejnění požadovaného release candidatu:
pip install 'qiskit==1.0.0rc1' - Pro závislost z větve
main(nebo nahraďmainjiným identifikátorem revizegitza znakem@):pip install 'git+https://github.com/Qiskit/qiskit.git@main'
Nyní máš prostředí, ve kterém ti Qiskit umožňuje testovat. Pokud import qiskit vyústí v ImportError nebo pokud máš potíže s nalezením závislostí, podívej se na rady v části o ochranách při neplatném prostředí v Qiskitu.
Ukázkové ruční workflows pro GitHub Actions
Následující workflows nastavují naplánovanou úlohu spouštěnou přes noc. Tato úloha připraví testovací prostředí pro Qiskit 1.0 a spustí pytest (nebo jiné testovací kroky, které potřebuješ).
Pro balíček, který nemá žádné tranzitivní závislosti s 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
Pro balíček, který má nevyhnutelné tranzitivní závislosti omezující qiskit<1, sestav neplatné prostředí:
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
Ukázková konfigurace tox
Následující příklady ukazují sekce tox.ini pro sestavení testovacího prostředí pro Qiskit 1.0 a spuštění pytest (nebo jiných testovacích kroků, které potřebuješ).
Pokud nic nebrání instalaci Qiskitu 1.0 v platném prostředí:
[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`.
Pokud tvůj balíček nebo tranzitivní závislost má nevyhnutelné omezení qiskit<1, doporučujeme provést toto testování pomocí ručního sestavení prostředí, jak je popsáno v předchozí části, protože tox přináší řadu komplikací tím, že je přísnější ohledně izolace prostředí a pořadí instalací.
Jde o správné chování tox (neměli bychom sestavovat neplatné prostředí), ale protože již víme, že neplatné prostředí sestavujeme záměrně, tyto kontroly nám překáží.
[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.
Řešení problémů
Změny v balíčkování kolem Qiskit 1.0 jsou složité a standardní nástroj Pythonu pip není v některých ohledech dostatečně schopný, abychom mu mohly sdělit změny ve struktuře distribucí – to bohužel může způsobovat problémy uživatelům.
Snažili jsme se zajistit, aby Qiskit selhal rychle a hlasitě, pokud zjistí neplatné prostředí, aniž by docházelo k falešným poplachům.
Chápeme, že uživatele může chybová zpráva obtěžovat, ale podle naší zkušenosti je mnohem lepší si problém uvědomit okamžitě, než aby vše zdánlivě fungovalo, jen aby to pak v budoucnu selhalo nenápadnými způsoby.
Tato sekce obsahuje chyby balíčkování, které můžeš vidět, a popisuje, jak je vyřešit.
Většina těchto problémů není specifická pro Qiskit, takže rady jsou pravděpodobně relevantní, i když problematické části nesouvisí s Qiskem.
import qiskit hlásí "ModuleNotFoundError: No module named 'qiskit'"
Python nemůže najít tvoji instalaci Qisku.
Pokud jsi Qiskit určitě nainstaloval(a), pravděpodobně nemáš aktivované správné virtuální prostředí. Pokyny najdeš v sekci o aktivaci virtuálního prostředí.
Pokud používáš Jupyter a vidíš tuto chybu, ujisti se, že je Jupyter nainstalovaný ve stejném virtuálním prostředí jako Qiskit.
Ukonči Jupyter, aktivuj virtuální prostředí Qisku na příkazové řádce, spusť pip install jupyterlab (nebo jakékoli jiné rozhraní pro notebooky, které používáš) a poté znovu otevři Jupyter.
import qiskit uspěje, ale pokus o cokoli vrátí "AttributeError: module 'qiskit' has no attribute '...'"
To pravděpodobně znamená, že tvoje prostředí obsahovalo starou verzi Qisku spolu s balíčkem, který rozšiřoval jeho jmenný prostor (například staré verze Qiskit Aer nebo dávno zastaralý Qiskit IBM Q® Provider), a poté byl Qiskit odinstalován. Nejjednodušší je začít v novém virtuálním prostředí a instalovat do něj pouze aktuální, nezastaralé balíčky.
Pokud jsi právě začal(a) v novém virtuálním prostředí nebo jsi si jistý(á), že starší balíčky nejsou problémem, ujisti se, že tvůj aktuální pracovní adresář (adresář, ve kterém bylo tvoje shellové sezení při spuštění Pythonu / Jupyteru) neobsahuje složku s názvem qiskit.
Výchozí pravidla Pythonu prohledávají aktuální pracovní adresář velmi brzy v cestě vyhledávání při pokusu o import modulu, takže adresář s duplicitním názvem může způsobit problémy s importem.
pip odmítá instalovat některé balíčky dohromady
Po spuštění příkazu pip install s mnoha položkami se může zobrazit chyba jako:
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
Toto popisuje skutečný konflikt závislostí; neexistuje platný způsob, jak nainstalovat všechny tyto distribuce současně.
V kontextu Qiskit 1.0 to pravděpodobně znamená, že jedna z distribucí, které se pokoušíš nainstalovat, obsahuje požadavek jako qiskit<1.0.
To znamená, že vývojáři této distribuce ji označili jako (zatím) nekompatibilní s Qiskit 1.0.
Můžeš (zdvořile) požádat tyto vývojáře, kdy vydají novou verzi svého balíčku kompatibilní s Qiskit 1.0, ale nejprve zkontroluj, zda tam nemají otevřené issue nebo pull request, který o to již žádá – ať už tam komentáře přijímají. Buď ohleduplný(á) – to zabere čas; prosím dej vývojářům tak měsíc na přípravu nových verzí jejich distribucí! Do té doby nemůžeš instalovat tuto distribuci spolu s Qiskit 1.0. Chceš-li tuto distribuci nadále používat, vytvoř nové virtuální prostředí a použij Qiskit 0.45 nebo 0.46 (nebo kteroukoli verzi, kterou podporuje) spolu s tímto jiným balíčkem.
Pokud tuto chybu dostaneš, nepokoušej se sestavit prostředí opakovaným voláním pip install.
Tyto příkazy pravděpodobně selžou, ale vytvoříš neplatné prostředí.
Pak bys pravděpodobně viděl(a) některé z dalších chybových zpráv popsaných v této sekci.
Můžeš si také přečíst dokumentaci od autority pro balíčkování Pythonu o řešení konfliktů.
pip uspěje, ale po spuštění příkazů pip install vypíše chyby
Ve výstupu pip se může zobrazit chyba, například:
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.
První řádek se obvykle zobrazuje doslovně (od verze pip 23.3), ale druhý řádek se mění v závislosti na konkrétním problému a takových řádků může být více.
pip pak pravděpodobně uvede, že provedl to, co jsi chtěl(a), i přes chybovou zprávu.
To znamená, že prostředí je v konfliktu a nemůžeš si být jistý(á), že bude fungovat správně.
Chceš-li problém vyřešit, projdi seznam zpráv od pip a urči, zda potřebuješ všechny balíčky s konfliktními požadavky.
Někdy dochází ke skutečným konfliktům mezi závislostmi; možná budeš potřebovat více virtuálních prostředí pro oddělení závislostí s nekompatibilními požadavky.
Nejbezpečnější volbou je začít v novém virtuálním prostředí (nebo ve více, pokud existují skutečné konflikty) a to konfliktní smazat.
Při nastavování virtuálních prostředí spusť pouze jeden příkaz pip install, který obsahuje všechny závislosti, které potřebuješ.
To je nejspolehlivější způsob, jak zajistit, aby pip nalezl správně vyřešené prostředí bez konfliktů.
Pokud problémy s konflikty přetrvávají po nastavení prostředí, vyhýbej se dalšímu spouštění příkazů pip install nebo pip uninstall; pip nezaručuje, že prostředí zůstane konzistentní při následných příkazech.
Pokud tě práce s více virtuálními prostředími znepokojuje, věz, že vývoj a používání Pythonu často zahrnuje několik virtuálních prostředí. Je to běžná a dobrá praxe vytvářet nová prostředí pro práci na oddělených projektech. Až s virtuálním prostředím skončíš, můžeš jeho adresář jednoduše smazat; není důvod uchovávat více prostředí trvale.
import qiskit vyvolá ImportError
Při spuštění import qiskit se může zobrazit chyba jako:
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.
Možná jsi spustil(a) zcela platný příkaz pip install, dodržel(a) v šechna doporučení v tomto průvodci, a přesto tuto chybovou zprávu vidíš.
To není tvoje chyba, ale chybová zpráva je stále správná a Qiskit se nemůže bezpečně načíst.
Chyba znamená, že Qiskit je nainstalovaný v neplatném prostředí, které obsahuje jak Qiskit 1.0, tak starší verzi.
Projevuje se tím, že distribuce qiskit-terra je nainstalovaná vedle Qiskit 1.0.
Můžeš zkontrolovat, které distribuce jsou nainstalovány, spuštěním pip list, ale nemůžeš to opravit pouhým odinstalováním qiskit-terra.
Bohužel qiskit>=1.0 a qiskit-terra jsou konfliktní distribuce a nelze je nainstalovat dohromady.
A ještě naneštěstí nemůžeme tento konflikt sdělit pipu kvůli omezením jeho systému metadat.
Tato chyba nejčastěji nastává v jedné ze dvou situací:
- Spustil(a) jsi něco jako
pip install 'qiskit>=1' something-elseasomething-elsemá požadavek naqiskit-terra. - Pokusil(a) ses spustit
pip install -U qiskitv existujícím prostředí.
V obou těchto případech není zaručeno, že pip ti vrátí užitečnou zprávu.
Jedním ze způsobů, jak přinutit pip, aby zakázal qiskit-terra z jednotlivých příkazů install, je použití souboru omezení (constraints file), který vyžaduje, aby qiskit-terra byl nastaven na nemožnou verzi.
Například soubor omezení obsahující řádek qiskit-terra>=1.0 znamená, že pokud se závislost pokusí nainstalovat qiskit-terra, žádná publikovaná verze nesplní požadavky.
Takový soubor jsme poskytli v GitHub Gist na adrese https://qisk.it/1-0-constraints, který můžeš použít takto:
pip install -c https://qisk.it/1-0-constraints qiskit [other packages]
Pokud balíček vyžaduje qiskit-terra, zobrazí se selhání při řešení závislostí.
Vytvoření funkčního prostředí pro Qiskit 1.0
Bez ohledu na to, jak k tomu došlo, je mnohem snazší vytvořit nové virtuální prostředí.
Nejdřív musíme zjistit, které balíčky zavádějí závislost na qiskit-terra.
V poškozeném prostředí nainstaluj z PyPI nástroj pipdeptree. Jde o nástroj pro generování grafů závislostí:
pip install pipdeptree
Zeptej se ho, které balíčky zavádějí závislosti na qiskit-terra a qiskit (jde o dva samostatné příkazy):
pipdeptree --reverse --package qiskit-terra
pipdeptree --reverse --package qiskit
Výstupy mohou vypadat přibližně takto:
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]
Ve výše uvedeném příkladu máme dvě distribuce, které se prohlásily za kompatibilní s Qiskit 1.0 (qiskit-aer a qiskit-ibm-provider), a jednu, která má stále závislost na qiskit-terra.
Tento příklad má plochou strukturu závislostí.
Může se stát, že uvidíš mnohem hlubší strom.
Balíčky přímo závislé na qiskit-terra (s nejmenším odsazením) jsou nejspíše ty problematické, ale problematický může být i balíček hlouběji ve stromu, pokud závisí na konkrétní staré verzi jiného balíčku, který byl mezitím aktualizován.
Závislost na qiskit-terra může znamenat jednu z několika věcí:
-
Závislý balíček je zastaralý a nebude aktualizován tak, aby podporoval Qiskit 1.0.
V takovém případě není možné tento balíček použít spolu s Qiskit 1.0 a budeš muset nadále používat starší verzi Qiskitu. Typicky to poznáš tak, že závislý balíček je ve své nejnovější verzi (za předpokladu, že je prostředí nové a ty jsi verzi explicitně neomezil/a) a má přímou závislost na
qiskit-terra. -
Závislý balíček je aktivně udržovaný, ale zatím nepodporuje Qiskit 1.0.
V takovém případě musíš počkat, až vývojáři vydají kompatibilní verzi – buď trpělivý/á! Typicky to poznáš tak, že nainstalovaná distribuce není ve své nejnovější verzi, přestože tvůj příkaz pro instalaci verzi nespecifikoval. Nejnovější vydanou verzi distribuce můžeš zjistit na její stránce na https://pypi.org/.
pippravděpodobně procházel starší verze balíčku, dokud nenašel takovou (možná měsíce či roky starou), která závisela pouze naqiskit-terra.Přesně to se stalo v příkladu výše. V době vytvoření tohoto dokumentu bylo
qiskit-dynamics==0.4.4nejnovější vydanou verzí.
Pokud jsi toto prostředí sestavil/a pomocí několika příkazů pip install (například pokud je prostředí staré a bylo aktualizováno), zkus nejdřív nainstalovat všechny potřebné balíčky jediným příkazem pip install při vytváření nového prostředí.
Pokud problém přetrvává, alespoň jeden z požadovaných balíčků pravděpodobně zatím nepodporuje Qiskit 1.0 a pip nachází jeho starou verzi, u níž se domnívá, že bude fungovat, protože nezná konflikt qiskit>=1/qiskit-terra.
Místo toho použij příkazy pipdeptree k identifikaci závislostí, které zatím nepodporují Qiskit 1.0.
Při sestavování prostředí pro Qiskit 1.0 tyto balíčky vynech, nebo pokračuj v používání starší verze Qiskitu.
Viz Vytvoření nového prostředí pro pokyny.
Příklad v této sekci byl vygenerován před vydáním Qiskit 1.0.
Příslušná „stará" distribuce (qiskit-dynamics) se chovala správně; nebylo ještě známo, že podporuje Qiskit 1.0, proto to zaznačila ve svých požadavcích.
Zpětně měnit požadavky u dříve vydaných verzí není možné a pip může při sestavování prostředí prohledávat libovolně staré verze, aby něco funkčního nalezl.
Vytvoření funkčního prostředí pro Qiskit 0.45 nebo 0.46
Pokud máš poškozené prostředí po pokusu o instalaci Qiskit 0.45 nebo 0.46, nejpravděpodobnější příčinou je to, že pip nainstaloval Qiskit 1.0, protože se snažil vybrat nejnovější verze balíčků, i když to nebylo vyžadováno.
Nejjednodušší opravou je vytvořit nové virtuální prostředí a pak spustit jediný příkaz pip install se všemi potřebnými balíčky plus explicitní položkou 'qiskit<1'.
Pokud pip tento graf závislostí úspěšně vyřeší, mělo by ti vzniknout funkční virtuální prostředí.
Pokud alespoň jedna distribuce vyžaduje Qiskit 1.0 nebo vyšší, pip by ti měl zobrazit chybovou zprávu vysvětlující tuto situaci, která vypadá jako ta v sekci o selhání řešení závislostí.
K zjištění, které distribuce mají explicitní požadavek na qiskit>=1, můžeš také z poškozeného prostředí použít příkazy pipdeptree uvedené v části Vytvoření funkčního prostředí pro Qiskit 1.0.
Jsem vývojář/ka, moje prostředí jsou určitě správná a chyba se stále objevuje
Především: musíš si být naprosto jistý/á, že tvoje prostředí jsou správná.
Test, který Qiskit používá ke zjištění poškozeného prostředí, je poměrně robustní; konkrétně dotazuje importlib.metadata na informace o distribuci nainstalovaných balíčků a kontroluje vrácená čísla verzí.
Část testu pro Qiskit 1.0 také kontroluje přítomnost sentinel souborů, které existovaly ve starých verzích Qiskitu, ale ne v Qiskit 1.0.
Pokud jsi vývojář/ka Qiskitu, je možné, že máš na svém meta path (viz sys.meta_path) staré adresáře qiskit.egg-info nebo qiskit-terra.egg-info (nebo *.dist-info), které zůstaly po starých editovatelných instalacích.
Zkontroluj zejména svůj pracovní adresář, zda neobsahuje adresáře *.egg-info a *.dist-info.
Pokud se nacházejí v kořeni některého z tvých repozitářů, můžeš je smazat. Nejhorší, co se může stát, je že budeš muset znovu spustit pip install -e ., a to je dokonce nepravděpodobné, protože tyto adresáře jsou obvykle jen součástí procesu sestavení setuptools, který se sám neuklidí.
Pokud ti výše uvedené informace nepomohly a jsi stoprocentně přesvědčen/a, že tvoje prostředí je v pořádku (nebo záměrně testuješ poškozené prostředí):
- Vytvoř issue v Qiskit s vysvětlením, jak k tomu došlo a proč jsi přesvědčen/a, že prostředí je správné, abychom to mohli opravit.
- Výjimku můžeš potlačit nastavením proměnné prostředí
QISKIT_SUPPRESS_1_0_IMPORT_ERROR=1.