Saltar al contenido principal

Instala el nuevo paquete Qiskit 1.0

Qiskit 1.0 utiliza una estructura de empaquetado diferente a la de versiones anteriores de Qiskit, y es probable que cause problemas en entornos que usen paquetes que aún no son compatibles con Qiskit 1.0.

precaución

No intentes actualizar un entorno virtual de Python existente a Qiskit 1.0 en el mismo lugar.

No realizaremos cambios de empaquetado tan disruptivos en el futuro. Este es un evento único, en el lanzamiento de Qiskit 1.0, específicamente para que nuestra gestión de paquetes sea lo más sencilla posible de aquí en adelante.

Esta guía está dividida en las siguientes secciones. Solo necesitas revisar las que sean relevantes para ti.

Si te interesa entender la estructura de paquetes antigua y por qué cambió, consulta el resumen de los cambios disruptivos de empaquetado.

Para usuarios

Debes crear un nuevo entorno virtual para instalar Qiskit 1.0. Actualizar una instalación existente a Qiskit 1.0 en el mismo lugar es muy complicado y propenso a errores.

nota

Los ejemplos de esta sección usan el módulo venv, que forma parte de la biblioteca estándar de Python. Si usas una herramienta diferente, como virtualenv o conda, consulta su documentación para obtener ayuda.

Para los comandos de Linux y macOS se usa una sintaxis similar a bash. Para los comandos de Windows se usa PowerShell.

Crea el nuevo entorno

  1. Crea un nuevo entorno virtual en cada directorio de proyecto en el que estés trabajando, usando tu versión preferida de Python 3.8 o posterior.

    python3 -m venv .venv
  1. Activa el entorno.

    source .venv/bin/activate
  2. Instala los paquetes que necesites. Lo ideal es hacerlo con un único comando pip install que incluya todas las dependencias.

    pip install 'qiskit>=1'

    Opcionalmente puedes incluir paquetes adicionales como argumentos. Por ejemplo:

    pip install 'qiskit>=1' jupyterlab pandas matplotlib

    Qiskit 1.0 incluye cambios disruptivos, por lo que varios paquetes están marcados como aún no compatibles con él. Por eso, es posible que veas errores de pip hasta que se publiquen nuevas versiones de esos paquetes. Las versiones antiguas de algunos paquetes también pueden depender del paquete heredado qiskit-terra. Esos paquetes podrían no devolver errores al ejecutar este comando, pero sí lanzar un error al hacer import qiskit. No deberías instalar ningún paquete que dependa directamente de qiskit-terra.

    consejo

    Una forma de obligar a pip a prohibir qiskit-terra en comandos install individuales es usar un archivo de restricciones que establezca qiskit-terra en una versión imposible. Por ejemplo, un archivo de restricciones que incluya la línea qiskit-terra>=1.0 hará que, si una dependencia intenta instalar qiskit-terra, ninguna versión publicada cumpla los requisitos.

    Hemos proporcionado dicho archivo en un GitHub Gist en https://qisk.it/1-0-constraints, que puedes usar así:

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

    Si un paquete requiere qiskit-terra, verás un fallo de resolución.

    precaución

    No instales paquetes incompatibles con Qiskit 1.0 en este entorno virtual. Si necesitas usar esos paquetes, instálalos en un entorno virtual separado con Qiskit 0.45 o 0.46.

    Si tienes un entorno existente, puedes usar pipdeptree para consultar los requisitos de tus paquetes instalados y ver si alguno requiere qiskit<1. Para los que lo requieran, busca actualizaciones que los hagan compatibles con Qiskit 1.0.

    Si encuentras problemas, consulta la sección de solución de problemas, o pregunta en Qiskit Slack. Si crees que hay un error, puedes crear un issue en Qiskit.

  3. Si no vas a usar el entorno de inmediato, usa el comando deactivate para salir de él.

Usa el nuevo entorno

Cada vez que inicies una nueva sesión de línea de comandos, debes navegar al directorio de tu proyecto y "activar" el entorno ejecutando el comando activate:

source .venv/bin/activate

Para desarrolladores

Si mantienes un paquete que depende de Qiskit, usa esta información para aprender a expresar correctamente tu compatibilidad y a probar contra Qiskit 1.0.

Recomendaciones para los requisitos

Recomendamos que tu paquete requiera qiskit>=0.45,<1 (u otro límite inferior apropiado) si no estás seguro de si el paquete es compatible con Qiskit 1.0. Esta es la misma recomendación que se hace para la compatibilidad con NumPy 2.0.

Se publicará un candidato a lanzamiento de Qiskit 1.0, la versión 1.0.0rc1, el 1 de febrero de 2024. Deberías probar tu paquete contra esta versión y, lo antes posible, publicar una nueva versión (compatible) de tu paquete con el requisito superior sin fijar.

Recomendaciones para probar contra Qiskit 1.0

Estas recomendaciones aplican tanto a las pruebas proactivas contra la rama main de Qiskit como a las pruebas contra el candidato a lanzamiento 1.0.0rc1 (y versiones posteriores, si aplica).

No recomendamos proteger ramas en CI con éxito contra la rama main de Qiskit inicialmente, porque los cambios en Qiskit podrían impedirte fusionar PRs. Después del lanzamiento de los candidatos a lanzamiento de Qiskit, y cuando todas las dependencias de tu paquete soporten Qiskit 1.0, recomendamos proteger ramas con éxito contra el último candidato a lanzamiento, para garantizar que el paquete siga siendo compatible con Qiskit 1.0.

Si ni tu paquete ni ninguna de sus dependencias transitivas tiene un requisito fijado en qiskit<1, deberías crear un entorno virtual de pruebas como lo harías normalmente, en un único comando pip install, y especificar directamente qiskit==1.0.0rc1 o qiskit==git+https://github.com/Qiskit/qiskit.git@main según corresponda. Esta es la forma más confiable de asegurarte de tener un entorno completamente válido.

Si el único componente del grafo de dependencias de tu paquete que tiene un requisito fijado en qiskit<1 es tu propio paquete, puede que quieras que tu suite de CI parchee temporalmente tu archivo de requisitos para permitir Qiskit 1.0 e instale el entorno en un solo paso como antes. Alternativamente, usa las siguientes reglas para actualizaciones de entorno de propósito general, pero cambia a la resolución de entorno único tan pronto como sea posible.

Si al menos una de tus dependencias transitivas aún no tiene una versión publicada que permita el soporte de Qiskit 1.0, deberás hacer cambios manuales. Hay varias estrategias que puedes intentar, en orden aproximado de preferencia (de más a menos preferible):

  • Instala la dependencia problemática desde su propia rama main, si su versión de desarrollo ya ha relajado el pin, para que puedas construir el entorno de pruebas en un solo paso.
  • Excluye el uso de esa dependencia del entorno de pruebas, si es posible.
  • Crea un entorno de pruebas de la misma forma que lo harías normalmente, y luego anúlalo manualmente para usar Qiskit 1.0.

Actualizar manualmente un entorno existente

precaución

Este proceso crea deliberadamente un entorno inválido. Por lo tanto, cualquier prueba que lo use es menos válida. Las pruebas podrían parecer que pasan, pero esto no garantiza que el paquete sea compatible con Qiskit 1.0. Esto puede ocurrir porque el entorno no es autoconsistente y podría contener archivos que no existen en un entorno válido, o porque el comportamiento de un paquete anulado podría cambiar con Qiskit 1.0.

nota

Si una de tus dependencias fija qiskit<1 incluso en su rama de desarrollo, es posible que no funcione de ninguna manera con Qiskit 1.0, y si tus pruebas no pueden ejecutarse por esto, puede que tengas que esperar a que sean compatibles (o trabajar con ellos para lograrlo).

Para actualizar un entorno en el lugar, sigue estos pasos:

  1. Crea un entorno de la forma habitual, asegurándote de que no haya paquetes instalados que extiendan el espacio de nombres de qiskit o qiskit.providers.

  2. Desinstala tanto qiskit como qiskit-terra para asegurarte de que ninguno esté presente:

pip uninstall --yes qiskit qiskit-terra

En este punto, el directorio site-packages del entorno no debería contener un directorio qiskit. No es necesario verificar esto en cada ejecución de CI, pero si estás depurando un script localmente, sigue estos pasos para comprobarlo:

  1. Ejecuta el siguiente comando desde dentro del python del entorno virtual:
import site
print(site.getsitepackages())
  1. Verifica que esos directorios no contengan un directorio qiskit. Si lo contienen, probablemente tienes instalados paquetes que extienden el espacio de nombres y deberías encontrarlos y eliminar la dependencia.

  2. Instala la versión objetivo de Qiskit 1.0 con uno de estos comandos:

  • Una vez publicado el candidato a lanzamiento deseado:
    pip install 'qiskit==1.0.0rc1'
  • Para una dependencia de la rama main (o sustituye el identificador de revisión git que prefieras después del @):
    pip install 'git+https://github.com/Qiskit/qiskit.git@main'

Ahora tienes un entorno en el que Qiskit te permite hacer pruebas. Si import qiskit produce un ImportError, o si tienes dificultades para encontrar tus dependencias, consulta el apartado sobre las protecciones de entorno inválido en Qiskit.

Ejemplos de flujos de trabajo manuales para GitHub Actions

Los siguientes flujos de trabajo configuran un trabajo programado para ejecutarse cada noche. Este trabajo prepara un entorno de pruebas para Qiskit 1.0 y ejecuta pytest (o los pasos de prueba que necesites).

Para un paquete que no tiene dependencias transitivas con 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 un paquete que tiene dependencias transitivas inevitables que fijan qiskit<1, construye un entorno inválido:

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

Ejemplo de configuración de tox

Los siguientes son ejemplos de secciones de tox.ini para construir un entorno de pruebas para Qiskit 1.0 y ejecutar pytest (o los pasos de prueba que necesites).

Si nada impide que Qiskit 1.0 se instale en un entorno válido:

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

Si tu paquete o una dependencia transitiva tiene un pin inevitable en qiskit<1, recomendamos hacer estas pruebas usando la construcción manual del entorno como en la sección anterior, porque tox introduce varias complejidades al ser más estricto sobre el aislamiento del entorno y el orden de instalación. Este es el comportamiento correcto de tox (no deberíamos construir un entorno inválido), pero como ya sabemos que estamos construyendo un entorno inválido, estas comprobaciones se interponen.

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

Resolución de problemas

Los cambios de empaquetado en torno a Qiskit 1.0 son complicados, y la herramienta estándar de Python pip no es suficientemente expresiva en algunos aspectos para que podamos comunicarle los cambios en las estructuras de distribución, lo que lamentablemente puede causar problemas a los usuarios. Hemos intentado que Qiskit falle de forma rápida y explícita si detecta un entorno no válido, sin generar falsos positivos. Entendemos que puede resultar molesto recibir el mensaje de error, pero en nuestra experiencia es mucho mejor ser consciente del problema de inmediato que aparentar que todo funciona correctamente para luego fallar de forma sutil en el futuro.

Esta sección contiene errores de empaquetado que podrías encontrar y describe cómo resolverlos.

La mayoría de estos problemas no son exclusivos de Qiskit, por lo que el consejo probablemente sea relevante aunque las partes problemáticas no estén relacionadas con Qiskit.

import qiskit indica "ModuleNotFoundError: No module named 'qiskit'"

Python no puede encontrar tu instalación de Qiskit.

Si definitivamente instalaste Qiskit, probablemente no tienes el entorno virtual correcto activado. Consulta la sección sobre cómo activar un entorno virtual para obtener instrucciones.

Si estás usando Jupyter y ves esto, asegúrate de que Jupyter esté instalado en el mismo entorno virtual que Qiskit. Sal de Jupyter, activa el entorno virtual de Qiskit en la línea de comandos, ejecuta pip install jupyterlab (o la interfaz de notebook que uses) y vuelve a abrir Jupyter.

import qiskit tiene éxito, pero intentar hacer cualquier cosa devuelve "AttributeError: module 'qiskit' has no attribute '...'"

Probablemente esto significa que tu entorno tenía una versión antigua de Qiskit junto con un paquete que extendía su espacio de nombres (como versiones antiguas de Qiskit Aer, o el ya obsoleto Qiskit IBM Q® Provider), y luego Qiskit fue desinstalado. Lo más sencillo es iniciar un nuevo entorno virtual e instalar únicamente paquetes recientes y no obsoletos.

Si acabas de crear un nuevo entorno virtual, o estás seguro de que los paquetes heredados no son el problema, asegúrate de que tu directorio de trabajo actual (el directorio en el que estaba tu sesión de shell cuando lanzaste Python / Jupyter) no contenga una carpeta llamada qiskit. Las reglas predeterminadas de Python buscan en el directorio de trabajo actual muy al principio de la ruta de búsqueda al intentar hacer import de un módulo, por lo que un directorio con un nombre duplicado puede causar problemas de importación.

pip se niega a instalar algunos paquetes juntos

Después de ejecutar un comando pip install con varios elementos, podrías ver un error como el siguiente:

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

Esto describe un conflicto de resolución real; no hay ninguna forma válida de instalar todas estas distribuciones al mismo tiempo.

En el contexto de Qiskit 1.0, probablemente se deba a que una de las distribuciones que intentas instalar contiene un requisito como qiskit<1.0. Esto significa que los desarrolladores de esa distribución la han marcado como (aún) no compatible con Qiskit 1.0.

Puedes pedir (amablemente) a esos desarrolladores cuándo publicarán una nueva versión de su paquete compatible con Qiskit 1.0, pero primero comprueba si ya hay algún issue o pull request abierto que solicite esto en el lugar donde aceptan comentarios. Ten en cuenta que esto lleva tiempo; ¡por favor, dale a los desarrolladores un mes más o menos para preparar nuevas versiones de sus distribuciones! Hasta entonces, no puedes instalar esa distribución junto con Qiskit 1.0. Para seguir usando esa distribución, crea un nuevo entorno virtual y usa Qiskit 0.45 o 0.46 (o la versión que soporte) junto con ese otro paquete.

precaución

Si recibes este error, no intentes construir el entorno llamando a pip install varias veces. Esos comandos probablemente no fallarán, pero habrás creado un entorno no válido. Es probable que luego veas algunos de los otros mensajes de error descritos en esta sección.

También puedes leer la documentación de la Python Packaging Authority sobre resolución de conflictos.

pip tiene éxito pero imprime errores tras ejecutar comandos pip install

Podrías ver un error en la salida de pip, como el siguiente:

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 primera línea suele aparecer exactamente igual (a partir de pip 23.3), pero la segunda línea varía según el problema exacto, y puede haber varias líneas similares. Es probable que pip indique luego que hizo lo que solicitaste correctamente, a pesar del mensaje de error.

Esto significa que el entorno tiene conflictos y no puedes estar seguro de que funcionará correctamente. Para resolver el problema, examina la lista de mensajes de pip y determina si necesitas todos los paquetes que tienen requisitos en conflicto. A veces habrá conflictos reales entre dependencias; puede que necesites varios entornos virtuales para separar dependencias con requisitos incompatibles.

La opción más segura es crear un nuevo entorno virtual (o más de uno si hay conflictos reales) y eliminar el que está en conflicto.

Al configurar entornos virtuales, ejecuta solo un comando pip install que incluya todas las dependencias que necesitas. Esta es la forma más fiable para que pip encuentre un entorno correctamente resuelto sin conflictos. Si sigues teniendo problemas con conflictos al configurar entornos, evita ejecutar más comandos pip install o pip uninstall; pip no garantiza mantener el entorno coherente en comandos posteriores.

nota

Si te preocupa trabajar con varios entornos virtuales, ten la seguridad de que el desarrollo y el uso de Python a menudo implican varios entornos virtuales. Es habitual y una buena práctica crear nuevos para trabajar en proyectos separados. Cuando hayas terminado con un entorno virtual, simplemente puedes eliminar su directorio; no hay ninguna razón para mantener varios entornos de forma permanente.

import qiskit lanza ImportError

Al ejecutar import qiskit, podrías ver un error como:

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.

consejo

Es posible que hayas ejecutado un comando pip install completamente válido, siguiendo todas las recomendaciones de esta guía, y aun así ver este mensaje de error. Esto no es culpa tuya, pero el mensaje de error sigue siendo correcto y Qiskit no puede cargarse de forma segura.

El error significa que Qiskit está instalado en un entorno no válido que incluye tanto Qiskit 1.0 como una versión anterior. Esto se caracteriza porque la distribución qiskit-terra está instalada junto con Qiskit 1.0. Puedes comprobar qué distribuciones están instaladas ejecutando pip list, pero no puedes solucionar esto simplemente desinstalando qiskit-terra.

Lamentablemente, qiskit>=1.0 y qiskit-terra son distribuciones en conflicto y no pueden estar instaladas juntas. Más lamentablemente aún, no podemos comunicar este conflicto a pip debido a las limitaciones de su sistema de metadatos.

Este error surge con mayor frecuencia en una de estas dos situaciones:

  • Ejecutaste algo como pip install 'qiskit>=1' something-else y something-else tiene un requisito sobre qiskit-terra.
  • Intentaste ejecutar pip install -U qiskit en un entorno existente.

En ambos casos, no hay garantía de que pip te devuelva un mensaje útil.

consejo

Una forma de exigir a pip que prohíba qiskit-terra en comandos install individuales es usar un archivo de restricciones que establezca qiskit-terra en una versión imposible. Por ejemplo, un archivo de restricciones que incluya la línea qiskit-terra>=1.0 significará que si una dependencia intenta instalar qiskit-terra, ninguna versión publicada coincidirá con los requisitos.

Hemos proporcionado dicho archivo en un GitHub Gist en https://qisk.it/1-0-constraints, que puedes usar así:

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

Si un paquete requiere qiskit-terra, verás un fallo de resolución.

Crear un entorno funcional para Qiskit 1.0

No importa cómo haya ocurrido esto, es mucho más fácil crear un nuevo entorno virtual.

Primero, necesitamos averiguar qué paquetes están introduciendo una dependencia en qiskit-terra. Usando el entorno roto, instala pipdeptree desde PyPI. Esta es una herramienta para generar grafos de dependencias:

pip install pipdeptree

Pregúntale qué paquetes están introduciendo dependencias en qiskit-terra y qiskit (estos son dos comandos separados):

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

Las salidas pueden verse algo así:

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]

En el ejemplo anterior, tenemos dos distribuciones que se han declarado compatibles con Qiskit 1.0 (qiskit-aer y qiskit-ibm-provider), y una que aún tiene una dependencia en qiskit-terra.

consejo

Este ejemplo tiene una estructura de dependencia plana. Es posible que veas un árbol mucho más profundo que este. Los paquetes que dependen directamente de qiskit-terra (con menor indentación) son los que tienen más probabilidades de ser problemáticos, aunque uno más profundo en el árbol también podría serlo si depende de una versión específica y antigua de algún otro paquete que ya ha sido actualizado.

Ver una dependencia en qiskit-terra puede significar una de varias cosas:

  • El dependiente es un paquete antiguo que no se actualizará para admitir Qiskit 1.0.

    En este caso, no hay posibilidad de usar el paquete con Qiskit 1.0 y tendrás que seguir usando una versión anterior de Qiskit. Normalmente esto se caracteriza porque el dependiente está en su última versión (suponiendo que el entorno sea nuevo y no lo hayas fijado a una versión inferior) y tiene un requisito directo sobre qiskit-terra.

  • El dependiente es un paquete que se mantiene activamente, pero aún no admite Qiskit 1.0.

    En este caso, tendrás que esperar a que los desarrolladores publiquen una versión compatible; ¡por favor, sé paciente! Normalmente esto se caracteriza porque la distribución instalada no está en su última versión, aunque tu comando de instalación no especificara una versión. Puedes comprobar la última versión publicada de la distribución buscando su página en https://pypi.org/.

    pip probablemente buscó versiones antiguas del paquete hasta encontrar una (posiblemente de hace meses o años) que dependía únicamente de qiskit-terra.

    Esto es lo que ocurrió en el ejemplo anterior. En el momento en que se creó este documento, qiskit-dynamics==0.4.4 era la última versión publicada.

Si construiste este entorno con varios comandos pip install (por ejemplo, si el entorno es antiguo y ha sido actualizado), intenta primero instalar todos tus paquetes usando un único comando pip install al crear un nuevo entorno. Si el problema persiste, al menos uno de los paquetes que deseas probablemente no admite Qiskit 1.0 todavía, y pip está encontrando una versión antigua que cree que funcionará porque desconoce el conflicto qiskit>=1/qiskit-terra.

En su lugar, usa los comandos de pipdeptree para identificar qué dependencias aún no admiten Qiskit 1.0. Excluye cualquier paquete que no admita todavía Qiskit 1.0 al construir un entorno para Qiskit 1.0, o sigue usando una versión anterior de Qiskit. Consulta Crear el nuevo entorno para obtener instrucciones.

nota

El ejemplo de esta sección se generó antes del lanzamiento de Qiskit 1.0.

La distribución "antigua" en cuestión (qiskit-dynamics) se estaba comportando correctamente; no se sabía que admitía Qiskit 1.0 todavía, por lo que lo indicó en sus requisitos. No es posible actualizar retroactivamente los cambios de requisitos en versiones publicadas anteriormente, y pip buscará arbitrariamente hacia atrás para encontrar algo que funcione al construir un entorno.

Crear un entorno funcional para Qiskit 0.45 o 0.46

Si tienes un entorno roto después de intentar instalar Qiskit 0.45 o 0.46, la situación más probable es que pip haya instalado Qiskit 1.0 porque intentó elegir las últimas versiones de los paquetes, aunque no fuera necesario. La forma más sencilla de solucionarlo es crear un nuevo entorno virtual y ejecutar un único comando pip install que incluya todos los paquetes que necesitas, más una entrada explícita 'qiskit<1'. Si pip resuelve correctamente este grafo de dependencias, deberías tener un entorno virtual funcional. Si al menos una distribución requiere Qiskit 1.0 o superior, pip debería darte un mensaje de error explicándolo, similar al de la sección sobre resoluciones fallidas.

También puedes usar los comandos de pipdeptree listados en Crear un entorno funcional para Qiskit 1.0 desde dentro del entorno roto para determinar qué distribuciones tienen un requisito explícito en qiskit>=1.

Soy desarrollador, mis entornos están definitivamente bien y sigo obteniendo el error

Primero: debes estar absolutamente seguro de que tus entornos son correctos. La prueba que usa Qiskit para determinar si hay un entorno roto es bastante robusta; concretamente, consulta importlib.metadata para obtener información de distribución sobre los paquetes instalados y comprueba los números de versión devueltos. El lado de Qiskit 1.0 de la prueba también busca archivos centinela que estaban presentes en versiones antiguas de Qiskit y no en Qiskit 1.0.

Si eres un desarrollador de Qiskit, es posible que tengas directorios qiskit.egg-info o qiskit-terra.egg-info (o *.dist-info) antiguos presentes en tu meta path (consulta sys.meta_path), que quedaron de instalaciones editables antiguas. En particular, revisa tu directorio de trabajo en busca de directorios *.egg-info y *.dist-info. Si están en la raíz de uno de tus repositorios clonados, puedes eliminarlos. Lo peor que puede pasar es que necesites ejecutar pip install -e . de nuevo, y eso es poco probable, ya que normalmente son solo parte del proceso de construcción de setuptools que no se limpia automáticamente.

Si la información anterior no te ayuda y estás 100% seguro de que tu entorno es correcto (o estás deliberadamente intentando probar un entorno roto):

  1. Crea un issue en Qiskit explicando cómo ocurrió esto y por qué estás seguro de que el entorno es correcto para que podamos solucionarlo.
  2. Puedes suprimir la excepción estableciendo la variable de entorno QISKIT_SUPPRESS_1_0_IMPORT_ERROR=1.