Vai al contenuto principale

Installa il nuovo pacchetto Qiskit 1.0

Qiskit 1.0 usa una struttura di packaging diversa rispetto alle versioni precedenti e causerà probabilmente problemi negli ambienti che utilizzano pacchetti non ancora pronti per Qiskit 1.0.

attenzione

Non cercare di aggiornare un ambiente virtuale Python esistente a Qiskit 1.0 in-place.

Non apporteremo modifiche simili al packaging in futuro. Questo è un evento una tantum, al rilascio di Qiskit 1.0, proprio affinché la gestione del packaging sia il più semplice possibile in futuro.

Questa guida è suddivisa nelle sezioni seguenti. Devi leggere solo le sezioni pertinenti alla tua situazione.

Se vuoi capire la vecchia struttura dei pacchetti e il motivo del cambiamento, consulta la panoramica delle modifiche di packaging con rottura della compatibilità.

Per gli utenti​

Devi creare un nuovo ambiente virtuale per installare Qiskit 1.0. Aggiornare un'installazione esistente in-place a Qiskit 1.0 è molto complicato e soggetto a errori.

nota

Gli esempi in questa sezione usano il modulo venv, che fa parte della libreria standard di Python. Se usi uno strumento diverso, come virtualenv o conda, consulta la relativa documentazione.

Per i comandi su Linux e macOS viene usata la sintassi bash. Per i comandi su Windows viene usato PowerShell.

Crea il nuovo ambiente​

  1. Crea un nuovo ambiente virtuale in ogni directory di progetto su cui stai lavorando, usando la tua versione preferita di Python 3.8 o successiva.

    python3 -m venv .venv
  1. Attiva l'ambiente.

    source .venv/bin/activate
  2. Installa i pacchetti desiderati. Dovresti farlo usando un unico comando pip install con tutte le dipendenze.

    pip install 'qiskit>=1'

    Puoi facoltativamente includere pacchetti aggiuntivi come argomenti. Ad esempio:

    pip install 'qiskit>=1' jupyterlab pandas matplotlib

    Qiskit 1.0 include modifiche che rompono la compatibilità, quindi diversi pacchetti sono contrassegnati come non ancora compatibili. Potresti quindi vedere errori da pip finché non vengono rilasciate nuove versioni di quei pacchetti. Le versioni precedenti dei pacchetti potrebbero anche dipendere dal pacchetto legacy qiskit-terra. Questi pacchetti potrebbero non restituire errori durante l'esecuzione di questo comando, ma potrebbero generare un errore quando esegui import qiskit. Non dovresti installare pacchetti che dipendono direttamente da qiskit-terra.

    suggerimento

    Un modo per richiedere a pip di vietare qiskit-terra nei singoli comandi install è usare un file di constraints che impone a qiskit-terra una versione impossibile. Ad esempio, un file di constraints che include la riga qiskit-terra>=1.0 farà sì che, se una dipendenza tenta di installare qiskit-terra, nessuna versione pubblicata soddisferà i requisiti.

    Abbiamo messo a disposizione un file di questo tipo in un GitHub Gist all'indirizzo https://qisk.it/1-0-constraints, che puoi usare così:

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

    Se un pacchetto richiede qiskit-terra, vedrai un errore di risoluzione.

    attenzione

    Non installare in questo ambiente virtuale pacchetti incompatibili con Qiskit 1.0. Se hai bisogno di usare tali pacchetti, installali in un ambiente virtuale separato con Qiskit 0.45 o 0.46.

    Se hai un ambiente esistente, puoi usare pipdeptree per interrogare i requisiti dei tuoi pacchetti installati e verificare se richiedono qiskit<1. Per quelli che richiedono qiskit<1, cerca aggiornamenti che li rendano compatibili con Qiskit 1.0.

    Se incontri problemi, consulta la sezione risoluzione dei problemi, oppure chiedi sul canale Slack di Qiskit. Se pensi che si tratti di un bug, puoi aprire una segnalazione su Qiskit.

  3. Se non hai in programma di usare l'ambiente subito, usa il comando deactivate per uscirne.

Usa il nuovo ambiente​

Ogni volta che avvii una nuova sessione a riga di comando, devi navigare nella directory del progetto e "attivare" l'ambiente eseguendo il comando activate:

source .venv/bin/activate

Per gli sviluppatori​

Se mantieni un pacchetto che dipende da Qiskit, usa queste informazioni per imparare a dichiarare correttamente la compatibilità e testare il tuo codice con Qiskit 1.0.

Raccomandazioni per i requisiti​

Ti consigliamo di richiedere qiskit>=0.45,<1 (o un altro limite inferiore appropriato) se non sei sicuro che il pacchetto sia compatibile con Qiskit 1.0. Questa è la stessa raccomandazione fatta per la compatibilità con NumPy 2.0.

Una release candidate di Qiskit 1.0, la versione 1.0.0rc1, sarà rilasciata il 1° febbraio 2024. Dovresti testare il tuo pacchetto con questa versione e, appena possibile, rilasciare una nuova versione (compatibile) del pacchetto con il requisito superiore non più fissato.

Raccomandazioni per i test con Qiskit 1.0​

Queste raccomandazioni si applicano ai test proattivi sul branch main di Qiskit e ai test con la release candidate 1.0.0rc1 (e successive, se applicabile).

Non ti consigliamo inizialmente di proteggere i branch in base al successo della CI contro il branch main di Qiskit, perché le modifiche a Qiskit potrebbero impedire il merge delle PR. Dopo il rilascio delle release candidate di Qiskit, e dopo che tutte le dipendenze del tuo pacchetto supportano Qiskit 1.0, ti consigliamo invece di proteggere i branch in base al successo contro l'ultima release candidate, per assicurarti che il pacchetto rimanga compatibile con Qiskit 1.0.

Se né il tuo pacchetto, né nessuna delle sue dipendenze transitive, ha un requisito fissato su qiskit<1, dovresti creare un ambiente virtuale di test come faresti normalmente, con un unico comando pip install, specificando direttamente qiskit==1.0.0rc1 o qiskit==git+https://github.com/Qiskit/qiskit.git@main a seconda del caso. Questo è il modo più affidabile per garantire un ambiente completamente valido.

Se l'unico componente del grafo delle dipendenze del tuo pacchetto con un requisito fissato su qiskit<1 è il tuo stesso pacchetto, potresti voler fare in modo che la tua suite CI prima applichi temporaneamente una patch al file dei requisiti per consentire Qiskit 1.0, e poi installi l'ambiente in un unico passaggio come prima. In alternativa, usa le seguenti regole per gli aggiornamenti generici dell'ambiente, ma passa alla risoluzione con ambiente singolo non appena possibile.

Se almeno una delle tue dipendenze transitive non ha ancora una versione rilasciata che supporta Qiskit 1.0, devi apportare modifiche manuali. Esistono diverse strategie da provare, in ordine approssimativo di preferenza (dalla più alla meno preferibile):

  • Installa la dipendenza problematica dal suo branch main, se la versione in sviluppo ha allentato il requisito, così puoi costruire l'ambiente di test in un unico passaggio.
  • Escludi l'uso di quella dipendenza dall'ambiente di test, se possibile.
  • Crea un ambiente di test nel modo normale, poi sovrascrivilo manualmente per usare Qiskit 1.0.

Aggiornamento manuale di un ambiente esistente​

attenzione

Questo processo crea deliberatamente un ambiente non valido. Di conseguenza, qualsiasi test che lo utilizza è meno affidabile. I test potrebbero sembrare superati, ma questo non garantisce che il pacchetto sia compatibile con Qiskit 1.0. Ciò può accadere perché l'ambiente non è auto-consistente e potrebbe contenere file che non esistono in un ambiente valido, oppure il comportamento di un pacchetto sovrascritto potrebbe cambiare con Qiskit 1.0.

nota

Se una delle tue dipendenze fissa qiskit<1 anche nel suo branch di sviluppo, potrebbe non funzionare in alcun modo con Qiskit 1.0. Se i tuoi test non riescono a girare a causa di questo, potresti dover aspettare che quella dipendenza (o collaborare con i relativi sviluppatori) diventi compatibile.

Per aggiornare un ambiente in-place, segui questi passaggi:

  1. Crea un ambiente come di consueto, assicurandoti che non siano installati pacchetti che estendono il namespace qiskit o qiskit.providers.

  2. Disinstalla sia qiskit che qiskit-terra per assicurarti che nessuno dei due sia presente:

pip uninstall --yes qiskit qiskit-terra

A questo punto, la cartella site-packages dell'ambiente non dovrebbe contenere una directory qiskit. Non è necessario verificarlo a ogni esecuzione della CI, ma se stai eseguendo il debug di uno script in locale, segui questi passaggi per verificare:

  1. Esegui il seguente comando dall'interno del python dell'ambiente virtuale:
import site
print(site.getsitepackages())
  1. Verifica che queste directory non contengano una cartella qiskit. Se la contengono, probabilmente hai installato pacchetti che estendono il namespace: trovali e rimuovi la dipendenza.

  2. Installa la versione target di Qiskit 1.0 con uno di questi comandi:

  • Dopo che la release candidate desiderata è stata pubblicata:
    pip install 'qiskit==1.0.0rc1'
  • Per una dipendenza dal branch main (o sostituisci con qualsiasi identificatore di revisione git preferito dopo @):
    pip install 'git+https://github.com/Qiskit/qiskit.git@main'

Ora hai un ambiente in cui Qiskit ti consente di eseguire i test. Se import qiskit restituisce un ImportError, o se hai difficoltà a trovare le dipendenze, consulta il paragrafo sulle protezioni degli ambienti non validi in Qiskit.

Esempi di workflow GitHub Actions manuali​

I seguenti workflow configurano un job pianificato da eseguire di notte. Questo job prepara un ambiente di test per Qiskit 1.0 ed esegue pytest (o qualunque altro passaggio di test tu abbia bisogno).

Per un pacchetto senza dipendenze transitive su 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

Per un pacchetto con dipendenze transitive inevitabili che fissano qiskit<1, costruisci un ambiente non valido:

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

Esempi di configurazione tox​

I seguenti sono esempi di sezioni tox.ini per costruire un ambiente di test per Qiskit 1.0 ed eseguire pytest (o qualunque altro passaggio di test tu abbia bisogno).

Se nulla impedisce l'installazione di Qiskit 1.0 in un ambiente valido:

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

Se il tuo pacchetto o una dipendenza transitiva ha un requisito inevitabile su qiskit<1, ti consigliamo di eseguire questo test usando la costruzione manuale dell'ambiente come descritto nella sezione precedente, perché tox introduce diverse complessità essendo più rigido sull'isolamento dell'ambiente e sull'ordine di installazione. Questo è un comportamento corretto di tox (non dovremmo costruire un ambiente non valido), ma poiché sappiamo già che stiamo costruendo un ambiente non valido, questi controlli diventano un ostacolo.

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

Risoluzione dei problemi​

Le modifiche al packaging di Qiskit 1.0 sono complesse e lo strumento standard di Python pip non è abbastanza ricco per comunicargli i cambiamenti nelle strutture di distribuzione, il che potrebbe purtroppo causare problemi agli utenti. Abbiamo cercato di far fallire Qiskit in modo rapido e visibile se rileva un ambiente non valido, senza falsi positivi. Capiamo che ricevere il messaggio di errore possa essere fastidioso, ma nella nostra esperienza è molto meglio essere consapevoli del problema subito, piuttosto che avere qualcosa che sembra funzionare in superficie, salvo poi fallire in modi sottili in futuro.

Questa sezione descrive gli errori di packaging che potresti incontrare e come risolverli.

La maggior parte di questi problemi non è esclusiva di Qiskit, quindi il consiglio è probabilmente rilevante anche se le parti problematiche non riguardano Qiskit.

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

Python non riesce a trovare la tua installazione di Qiskit.

Se hai sicuramente installato Qiskit, probabilmente non hai l'ambiente virtuale corretto attivato. Consulta la sezione sull'attivazione di un ambiente virtuale per le istruzioni.

Se stai usando Jupyter e vedi questo errore, assicurati che Jupyter sia installato nello stesso ambiente virtuale di Qiskit. Esci da Jupyter, attiva l'ambiente virtuale di Qiskit dalla riga di comando, esegui pip install jupyterlab (o qualunque interfaccia notebook tu usi), poi riapri Jupyter.

import qiskit riesce, ma qualsiasi operazione restituisce "AttributeError: module 'qiskit' has no attribute '...'"​

Questo probabilmente significa che il tuo ambiente aveva una vecchia versione di Qiskit insieme a un pacchetto che ne estendeva il namespace (come le vecchie versioni di Qiskit Aer, o il lungo-obsoleto Qiskit IBM Q® Provider), e poi Qiskit è stato disinstallato. La cosa più semplice da fare è creare un nuovo ambiente virtuale e installarci solo pacchetti recenti e non obsoleti.

Se hai appena creato un nuovo ambiente virtuale, o sei sicuro che i pacchetti legacy non siano il problema, assicurati che la tua directory di lavoro corrente (la directory in cui si trovava la sessione della shell quando hai avviato Python / Jupyter) non contenga una cartella chiamata qiskit. Le regole predefinite di Python cercano la directory di lavoro corrente molto presto nel percorso di ricerca quando tenta di importare un modulo (import), quindi una directory con un nome duplicato può causare problemi di importazione.

pip si rifiuta di installare alcuni pacchetti insieme​

Dopo aver eseguito un comando pip install con molti elementi, potresti vedere un errore come:

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

Questo descrive un vero conflitto di risoluzione: non esiste un modo valido per installare tutte queste distribuzioni contemporaneamente.

Nel contesto di Qiskit 1.0, questo è probabilmente dovuto al fatto che una delle distribuzioni che stai cercando di installare contiene un requisito come qiskit<1.0. Ciò significa che gli sviluppatori di quella distribuzione l'hanno contrassegnata come non (ancora) compatibile con Qiskit 1.0.

Puoi (cortesemente) chiedere a quegli sviluppatori quando rilasceranno una nuova versione compatibile con Qiskit 1.0, ma prima controlla che non ci siano già issue o pull request aperte che lo richiedono dove accettano commenti. Tieni presente che ci vuole tempo: per favore dai agli sviluppatori un mese circa per preparare le nuove versioni delle loro distribuzioni! Nel frattempo, non puoi installare quella distribuzione insieme a Qiskit 1.0. Per continuare a usarla, crea un nuovo ambiente virtuale e usa Qiskit 0.45 o 0.46 (o la versione supportata da quel pacchetto) insieme all'altro pacchetto.

attenzione

Se ricevi questo errore, non cercare di costruire l'ambiente chiamando pip install più volte. Quei comandi probabilmente non falliranno, ma avrai creato un ambiente non valido. Potresti quindi vedere alcuni degli altri messaggi di errore descritti in questa sezione.

Puoi anche leggere la documentazione della Python Packaging Authority sulla risoluzione dei conflitti.

pip riesce ma stampa errori dopo l'esecuzione dei comandi pip install​

Potresti vedere un errore nell'output di pip, come il seguente:

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.

La prima riga appare solitamente come mostrata (a partire da pip 23.3), ma la seconda riga cambia a seconda del problema specifico, e potrebbero esserci più righe simili. pip indicherà probabilmente di aver comunque completato l'operazione richiesta con successo, nonostante il messaggio di errore.

Questo significa che l'ambiente è in conflitto e non puoi essere sicuro che funzionerà correttamente. Per risolvere il problema, esamina l'elenco dei messaggi di pip e determina se hai bisogno di tutti i pacchetti con requisiti in conflitto. A volte ci saranno veri conflitti tra dipendenze; potresti aver bisogno di più ambienti virtuali per separare le dipendenze con requisiti incompatibili.

La scelta più sicura è iniziare un nuovo ambiente virtuale (o più di uno, se ci sono veri conflitti), quindi eliminare quello in conflitto.

Quando configuri gli ambienti virtuali, esegui un solo comando pip install che includa tutte le dipendenze necessarie. Questo è il modo più affidabile per permettere a pip di trovare un ambiente correttamente risolto e privo di conflitti. Se continui ad avere problemi con i conflitti dopo aver configurato gli ambienti, evita di eseguire ulteriori comandi pip install o pip uninstall; pip non garantisce di mantenere coerente l'ambiente con i comandi successivi.

nota

Se sei preoccupato all'idea di gestire più ambienti virtuali, sappi che lo sviluppo e l'uso di Python spesso implicano diversi ambienti virtuali. È pratica comune e buona crearne di nuovi per lavorare su progetti separati. Quando hai finito con un ambiente virtuale, puoi semplicemente eliminarne la directory; non c'è motivo di mantenere più ambienti in modo permanente.

import qiskit genera un ImportError​

Quando esegui import qiskit, potresti vedere un errore come:

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.

suggerimento

Potresti aver eseguito un comando pip install del tutto valido, seguendo tutte le raccomandazioni di questa guida, e vedere comunque questo messaggio di errore. Non è colpa tua, ma il messaggio di errore è comunque corretto, e Qiskit non può caricarsi in sicurezza.

L'errore significa che Qiskit è installato in un ambiente non valido che include sia Qiskit 1.0 che una versione precedente. Questo è caratterizzato dalla distribuzione qiskit-terra installata insieme a Qiskit 1.0. Puoi verificare quali distribuzioni sono installate eseguendo pip list, ma non puoi risolvere il problema semplicemente disinstallando qiskit-terra.

Purtroppo, qiskit>=1.0 e qiskit-terra sono distribuzioni in conflitto e non possono essere installate insieme. Ancora più purtroppo, non possiamo comunicare questo conflitto a pip a causa delle limitazioni del suo sistema di metadati.

Questo errore si verifica più frequentemente in una di queste due situazioni:

  • Hai eseguito qualcosa come pip install 'qiskit>=1' something-else, e something-else ha un requisito su qiskit-terra.
  • Hai provato a eseguire pip install -U qiskit in un ambiente esistente.

In entrambi i casi, non c'è garanzia che pip restituisca un messaggio utile.

suggerimento

Un modo per richiedere a pip di vietare qiskit-terra nei singoli comandi install è usare un file di constraints che impone a qiskit-terra una versione impossibile. Ad esempio, un file di constraints che include la riga qiskit-terra>=1.0 farà sì che, se una dipendenza tenta di installare qiskit-terra, nessuna versione pubblicata soddisferà i requisiti.

Abbiamo messo a disposizione un file di questo tipo in un GitHub Gist all'indirizzo https://qisk.it/1-0-constraints, che puoi usare così:

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

Se un pacchetto richiede qiskit-terra, vedrai un errore di risoluzione.

Crea un ambiente funzionante per Qiskit 1.0​

Indipendentemente da come è successo, è molto più semplice creare un nuovo ambiente virtuale.

Prima di tutto, dobbiamo scoprire quali pacchetti stanno introducendo una dipendenza da qiskit-terra. Usando l'ambiente non funzionante, installa pipdeptree da PyPI. Si tratta di uno strumento per generare grafi delle dipendenze:

pip install pipdeptree

Chiedi quali pacchetti stanno introducendo dipendenze da qiskit-terra e qiskit (questi sono due comandi separati):

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

L'output potrebbe essere simile a questo:

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]

Nell'esempio precedente, abbiamo due distribuzioni che si sono dichiarate compatibili con Qiskit 1.0 (qiskit-aer e qiskit-ibm-provider), e una che ha ancora una dipendenza da qiskit-terra.

suggerimento

Questo esempio ha una struttura di dipendenze piatta. Potresti vedere un albero molto più profondo. I pacchetti che dipendono direttamente da qiskit-terra (con la minore indentazione) sono quelli più probabilmente problematici, ma uno più in profondità nell'albero potrebbe essere problematico se dipende da una versione specifica e vecchia di qualche altro pacchetto che è già stato aggiornato.

Una dipendenza da qiskit-terra può significare una delle seguenti cose:

  • Il dipendente è un pacchetto vecchio, e non verrà aggiornato per supportare Qiskit 1.0.

    In questo caso, non c'è modo di usare il pacchetto con Qiskit 1.0, e dovrai continuare a usare una versione precedente di Qiskit. Tipicamente questo è caratterizzato dal dipendente che si trova all'ultima versione (supponendo che l'ambiente sia nuovo e non sia stato fissato a una versione inferiore) e che abbia un requisito diretto su qiskit-terra.

  • Il dipendente è un pacchetto attivamente mantenuto, ma non supporta ancora Qiskit 1.0.

    In questo caso, dovrai aspettare che gli sviluppatori rilascino una versione compatibile — per favore sii paziente! Tipicamente questo è caratterizzato dalla distribuzione installata che non è all'ultima versione, anche se il comando di installazione non specificava una versione. Puoi controllare l'ultima versione rilasciata della distribuzione trovando la sua pagina su https://pypi.org/.

    pip ha probabilmente cercato versioni precedenti del pacchetto finché non ha trovato una (possibilmente risalente a mesi o anni fa) che dipendeva solo da qiskit-terra.

    Questo è quanto accaduto nell'esempio precedente. Al momento della creazione di questo documento, qiskit-dynamics==0.4.4 era l'ultima versione rilasciata.

Se hai costruito questo ambiente con diversi comandi pip install (ad esempio se l'ambiente è vecchio e aggiornato nel tempo), prova prima a installare tutti i tuoi pacchetti con un unico comando pip install quando costruisci un nuovo ambiente. Se il problema persiste, almeno uno dei pacchetti che vuoi probabilmente non supporta ancora Qiskit 1.0, e pip sta trovando una versione vecchia che ritiene funzionante perché non è a conoscenza del conflitto qiskit>=1/qiskit-terra.

Usa invece i comandi pipdeptree per identificare quali dipendenze non supportano ancora Qiskit 1.0. Escludi i pacchetti che non supportano ancora Qiskit 1.0 quando costruisci un ambiente per Qiskit 1.0, oppure continua a usare una versione precedente di Qiskit. Consulta Crea il nuovo ambiente per le istruzioni.

nota

L'esempio in questa sezione è stato generato prima del rilascio di Qiskit 1.0.

La distribuzione "vecchia" in questione (qiskit-dynamics) si comportava correttamente: non era noto che supportasse Qiskit 1.0, quindi lo aveva indicato nei suoi requisiti. Non è possibile retrodate le modifiche ai requisiti alle versioni già rilasciate, e pip cercherà arbitrariamente indietro nel tempo per trovare qualcosa che funzioni quando costruisce un ambiente.

Crea un ambiente funzionante per Qiskit 0.45 o 0.46​

Se hai un ambiente non funzionante dopo aver tentato di installare Qiskit 0.45 o 0.46, la situazione più probabile è che pip abbia installato Qiskit 1.0 perché tenta di scegliere le versioni più recenti dei pacchetti, anche se non era richiesto. Il modo più semplice per risolvere il problema è creare un nuovo ambiente virtuale, quindi eseguire un unico comando pip install con tutti i pacchetti necessari, più un'entry esplicita 'qiskit<1'. Se pip risolve correttamente questo grafo delle dipendenze, dovresti avere un ambiente virtuale funzionante. Se almeno una distribuzione richiede Qiskit 1.0 o superiore, pip dovrebbe darti un messaggio di errore che lo spiega, simile a quello nella sezione sulle risoluzioni fallite.

Puoi anche usare i comandi pipdeptree elencati in Crea un ambiente funzionante per Qiskit 1.0 dall'interno dell'ambiente non funzionante per determinare quali distribuzioni hanno un requisito esplicito su qiskit>=1.

Sono uno sviluppatore, i miei ambienti sono sicuramente corretti, ma continuo a ricevere l'errore​

Prima di tutto: devi essere assolutamente certo che i tuoi ambienti siano corretti. Il test che Qiskit usa per rilevare un ambiente non valido è abbastanza robusto; nello specifico, interroga importlib.metadata per le informazioni di distribuzione sui pacchetti installati e verifica i numeri di versione restituiti. Il lato Qiskit 1.0 del test verifica anche la presenza di file sentinella presenti nelle vecchie versioni di Qiskit ma non in Qiskit 1.0.

Se sei uno sviluppatore di Qiskit, è possibile che tu abbia vecchie directory qiskit.egg-info o qiskit-terra.egg-info (o *.dist-info) presenti nel tuo meta path (vedi sys.meta_path), residui di vecchie installazioni modificabili. In particolare, controlla nella tua directory di lavoro la presenza di directory *.egg-info e *.dist-info. Se si trovano nella radice di uno dei tuoi repository clonati, puoi eliminarle. Il peggio che può succedere è dover rieseguire pip install -e ., e anche questo è improbabile, perché di solito sono solo parte del processo di build di setuptools che non viene ripulito.

Se le informazioni precedenti non ti aiutano e sei sicuro al 100% che il tuo ambiente sia corretto (o stai deliberatamente cercando di testare un ambiente non valido):

  1. Apri una segnalazione in Qiskit spiegando come è successo e perché sei sicuro che l'ambiente sia corretto, così possiamo risolvere il problema.
  2. Puoi sopprimere l'eccezione impostando la variabile d'ambiente QISKIT_SUPPRESS_1_0_IMPORT_ERROR=1.