Pular para o conteúdo principal

Instale o novo pacote Qiskit 1.0

O Qiskit 1.0 utiliza uma estrutura de empacotamento diferente das versões anteriores e provavelmente causará problemas em ambientes que usam pacotes ainda não compatíveis com o Qiskit 1.0.

cuidado

Não tente atualizar um ambiente virtual Python existente para o Qiskit 1.0 diretamente.

Não faremos mudanças de empacotamento tão drásticas no futuro. Este é um evento único, no lançamento do Qiskit 1.0, especificamente para que nossa experiência de empacotamento seja o mais simples possível daqui para frente.

Este guia está dividido nas seguintes seções. Você só precisa revisar as seções relevantes para o seu caso.

Se você tiver interesse em entender a estrutura antiga do pacote e por que ela mudou, consulte a visão geral das mudanças de empacotamento incompatíveis.

Para usuários

Você deve iniciar um novo ambiente virtual para instalar o Qiskit 1.0. É muito complicado e sujeito a erros atualizar uma instalação existente para o Qiskit 1.0 diretamente.

nota

Os exemplos nesta seção usam o módulo venv, que faz parte da biblioteca padrão do Python. Se você usar uma ferramenta diferente, como virtualenv ou conda, consulte sua documentação para obter ajuda.

Para comandos no Linux e macOS, é usada uma sintaxe similar ao bash. O PowerShell é usado para comandos no Windows.

Crie o novo ambiente

  1. Crie um novo ambiente virtual em cada diretório de projeto em que você está trabalhando, usando sua versão preferida do Python 3.8 ou posterior.

    python3 -m venv .venv
  1. Ative o ambiente.

    source .venv/bin/activate
  2. Instale os pacotes desejados. Você deve fazer isso usando apenas um único comando pip install com todas as dependências.

    pip install 'qiskit>=1'

    Você pode incluir pacotes adicionais como argumentos. Por exemplo:

    pip install 'qiskit>=1' jupyterlab pandas matplotlib

    O Qiskit 1.0 inclui mudanças incompatíveis, portanto vários pacotes são marcados como ainda não compatíveis com ele. Por isso, você pode ver erros do pip até que novas versões desses pacotes sejam lançadas. Versões antigas de pacotes também podem depender do pacote legado qiskit-terra. Esses pacotes podem não retornar erros ao executar este comando, mas podem gerar um erro ao executar import qiskit. Você não deve instalar nenhum pacote que dependa diretamente de qiskit-terra.

    dica

    Uma forma de exigir que o pip proíba o qiskit-terra em comandos install individuais é usar um arquivo de restrições que define qiskit-terra em uma versão impossível. Por exemplo, um arquivo de restrições que inclui a linha qiskit-terra>=1.0 significa que, se uma dependência tentar instalar qiskit-terra, nenhuma versão publicada corresponderá aos requisitos.

    Fornecemos esse arquivo em um GitHub Gist em https://qisk.it/1-0-constraints, que você pode usar assim:

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

    Se um pacote exigir qiskit-terra, você verá uma falha de resolução.

    cuidado

    Não instale pacotes incompatíveis com o Qiskit 1.0 neste ambiente virtual. Se você precisar usar esses pacotes, instale-os em um ambiente virtual separado com o Qiskit 0.45 ou 0.46.

    Se você tiver um ambiente existente, pode usar o pipdeptree para consultar os requisitos dos seus pacotes instalados e verificar se eles exigem qiskit<1. Para qualquer um que exija qiskit<1, verifique se há atualizações que o tornem compatível com o Qiskit 1.0.

    Se você encontrar problemas, consulte a seção de solução de problemas, ou pergunte no Qiskit Slack. Se você achar que é um bug, pode criar uma issue no Qiskit.

  3. Se você não planeja usar o ambiente imediatamente, use o comando deactivate para sair dele.

Use o novo ambiente

Cada vez que você iniciar uma nova sessão de linha de comando, você deve navegar até o diretório do seu projeto e "ativar" o ambiente executando o comando activate:

source .venv/bin/activate

Para desenvolvedores

Se você mantém um pacote que depende do Qiskit, use estas informações para aprender a expressar corretamente sua compatibilidade e testar em relação ao Qiskit 1.0.

Recomendações para requisitos

Recomendamos que seu pacote exija qiskit>=0.45,<1 (ou outro limite inferior adequado) se você não tiver certeza se o pacote é compatível com o Qiskit 1.0. Esta é a mesma recomendação feita para compatibilidade com o NumPy 2.0.

Um candidato a lançamento do Qiskit 1.0, versão 1.0.0rc1, foi lançado em 1º de fevereiro de 2024. Você deve testar seu pacote em relação a ele e, o mais rápido possível, lançar uma nova versão (compatível) do seu pacote com o requisito superior sem fixação.

Recomendações para testes em relação ao Qiskit 1.0

Essas recomendações se aplicam tanto a testes proativos em relação ao branch main do Qiskit quanto a testes em relação ao candidato a lançamento 1.0.0rc1 (e versões posteriores, se aplicável).

Não recomendamos inicialmente proteger branches com base no sucesso da CI em relação ao branch main do Qiskit, pois mudanças no Qiskit podem impedir você de mesclar PRs. Após o lançamento dos candidatos a lançamento do Qiskit, e após todas as dependências do seu pacote suportarem o Qiskit 1.0, recomendamos sim proteger branches com base no sucesso em relação ao candidato a lançamento mais recente, para garantir que o pacote permaneça compatível com o Qiskit 1.0.

Se nem o seu pacote, nem nenhuma de suas dependências transitivas, tiver uma fixação de requisito em qiskit<1, você deve criar um ambiente virtual de teste como faria normalmente, em um único comando pip install, e especificar diretamente qiskit==1.0.0rc1 ou qiskit==git+https://github.com/Qiskit/qiskit.git@main, conforme apropriado. Essa é a maneira mais confiável de garantir que você tenha um ambiente completamente válido.

Se o único componente do grafo de dependências do seu pacote que tem uma fixação de requisito em qiskit<1 for o seu próprio pacote, você pode querer que sua suíte de CI primeiro aplique temporariamente um patch no seu arquivo de requisitos para permitir o Qiskit 1.0 e, em seguida, instalar o ambiente em uma única etapa como antes. Como alternativa, use as regras a seguir para atualizações de ambiente de uso geral, mas mude para resolução de ambiente único assim que for viável.

Se pelo menos uma das suas dependências transitivas ainda não tiver uma versão de lançamento que permita suporte ao Qiskit 1.0, você deverá fazer alterações manuais. Existem várias estratégias para tentar, em ordem aproximada de preferência (mais preferível para menos):

  • Instale a dependência problemática a partir de seu próprio branch main, se a versão em desenvolvimento tiver relaxado a fixação, para que você possa construir o ambiente de teste em uma única etapa.
  • Exclua o uso dessa dependência do ambiente de teste, se possível.
  • Crie um ambiente de teste da mesma forma que faria normalmente e, em seguida, substitua-o manualmente para usar o Qiskit 1.0.

Atualize manualmente um ambiente existente

cuidado

Esse processo cria deliberadamente um ambiente inválido. Portanto, qualquer teste que o utilize é menos válido. Os testes podem parecer passar, mas isso não garante que o pacote seja compatível com o Qiskit 1.0. Isso pode acontecer porque o ambiente não é auto-consistente e pode conter arquivos que não existem em um ambiente válido, ou o comportamento de um pacote substituído pode mudar com o Qiskit 1.0.

nota

Se uma de suas dependências fixar qiskit<1 mesmo no seu branch de desenvolvimento, ela pode não funcionar de forma alguma com o Qiskit 1.0, e se seus testes não puderem ser executados por causa disso, talvez você precise esperar que eles (ou trabalhar com eles para que) se tornem compatíveis.

Para atualizar um ambiente no lugar, siga estas etapas:

  1. Crie um ambiente normalmente, garantindo que não haja pacotes que estendam o namespace qiskit ou qiskit.providers instalados.

  2. Desinstale tanto qiskit quanto qiskit-terra para garantir que nenhum dos dois esteja presente:

pip uninstall --yes qiskit qiskit-terra

Neste ponto, o diretório site-packages do ambiente não deve conter um diretório qiskit. Você não precisa verificar isso em cada execução de CI, mas se estiver depurando um script localmente, siga estas etapas para verificar:

  1. Execute o seguinte comando a partir do python do ambiente virtual:
import site
print(site.getsitepackages())
  1. Verifique se esses diretórios não contêm um diretório qiskit. Se contiverem, você provavelmente tem pacotes que estendem o namespace instalados, e deve encontrá-los e remover a dependência.

  2. Instale a versão alvo do Qiskit 1.0 com um destes comandos:

  • Após o candidato a lançamento desejado ter sido publicado:
    pip install 'qiskit==1.0.0rc1'
  • Para uma dependência do branch main (ou substitua o identificador de revisão git de sua preferência após o @).
    pip install 'git+https://github.com/Qiskit/qiskit.git@main'

Agora você tem um ambiente no qual o Qiskit permite que você teste. Se import qiskit resultar em um ImportError, ou se você estiver tendo dificuldades para encontrar suas dependências, consulte as orientações na seção sobre as proteções de ambiente inválido no Qiskit.

Exemplos de workflows manuais do GitHub Actions

Os workflows a seguir configuram um job agendado para ser executado durante a noite. Esse job configura um ambiente de teste para o Qiskit 1.0 e executa o pytest (ou quaisquer etapas de teste que você precisar).

Para um pacote que não tem dependências transitivas 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 um pacote que tem dependências transitivas inevitáveis que fixam qiskit<1, construa um ambiente 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

Exemplo de configuração do tox

Os exemplos a seguir são seções de tox.ini para construir um ambiente de teste para o Qiskit 1.0 e executar o pytest (ou quaisquer etapas de teste que você precisar).

Se nada impedir a instalação do Qiskit 1.0 em um ambiente 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`.

Se o seu pacote ou uma dependência transitiva tiver uma fixação inevitável em qiskit<1, recomendamos fazer esses testes usando a construção manual de ambiente como na seção acima, porque o tox introduz várias complexidades por ser mais rígido sobre o isolamento de ambientes e a ordem de instalação. Esse é o comportamento correto do tox (não devemos construir um ambiente inválido), mas como já sabemos que estamos construindo um ambiente inválido, essas verificações atrapalham.

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

Solução de problemas

As mudanças de empacotamento em torno do Qiskit 1.0 são complexas, e a ferramenta padrão do Python pip não é suficientemente rica em alguns aspectos para nos permitir comunicar as mudanças nas estruturas de distribuição a ela, o que infelizmente pode causar problemas para os usuários. Tentamos fazer com que o Qiskit falhe de forma rápida e clara caso detecte um ambiente inválido, sem falsos positivos. Entendemos que os usuários podem achar irritante receber a mensagem de erro, mas em nossa experiência, é muito melhor estar ciente do problema imediatamente do que ter as coisas aparentemente funcionando na superfície, apenas para falhar de formas sutis no futuro.

Esta seção contém erros de empacotamento que você pode encontrar e descreve como resolvê-los.

A maioria desses problemas não é exclusiva do Qiskit, portanto o conselho provavelmente é relevante mesmo que as partes problemáticas não estejam relacionadas ao Qiskit.

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

O Python não consegue encontrar sua instalação do Qiskit.

Se você definitivamente instalou o Qiskit, provavelmente não tem o ambiente virtual correto ativado. Consulte a seção sobre como ativar um ambiente virtual para obter instruções.

Se você estiver usando o Jupyter e ver isso, certifique-se de que o Jupyter está instalado no mesmo ambiente virtual que o Qiskit. Saia do Jupyter, ative o ambiente virtual do Qiskit na linha de comando, execute pip install jupyterlab (ou qualquer interface de notebook que você use) e, em seguida, reabra o Jupyter.

import qiskit é bem-sucedido, mas tentar fazer qualquer coisa retorna "AttributeError: module 'qiskit' has no attribute '...'"

Isso provavelmente significa que seu ambiente tinha uma versão antiga do Qiskit junto com um pacote que estendia seu namespace (como versões antigas do Qiskit Aer, ou o Qiskit IBM Q® Provider há muito obsoleto), e então o Qiskit foi desinstalado. A maneira mais fácil de resolver isso é iniciar um novo ambiente virtual e instalar apenas pacotes recentes e não obsoletos nele.

Se você acabou de iniciar um novo ambiente virtual, ou tem certeza de que pacotes legados não são o problema, verifique se o seu diretório de trabalho atual (o diretório em que sua sessão de shell estava quando você iniciou o Python / Jupyter) não contém uma pasta chamada qiskit. As regras padrão do Python pesquisam o diretório de trabalho atual muito cedo no caminho de busca ao tentar importar um módulo, portanto um diretório com um nome duplicado pode causar problemas de importação.

pip se recusa a instalar alguns pacotes juntos

Após executar um comando pip install com muitos itens, você pode ver um erro como:

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

Isso descreve um verdadeiro conflito de resolução; não há uma maneira válida de instalar todas essas distribuições ao mesmo tempo.

No contexto do Qiskit 1.0, isso provavelmente ocorre porque uma das distribuições que você está tentando instalar contém um requisito como qiskit<1.0. Isso significa que os desenvolvedores dessa distribuição a marcaram como ainda não compatível com o Qiskit 1.0.

Você pode (educadamente) perguntar a esses desenvolvedores quando lançarão uma nova versão de seu pacote compatível com o Qiskit 1.0, mas primeiro verifique se eles não têm nenhuma issue ou pull request aberta solicitando isso no local onde aceitam comentários. Esteja ciente de que isso leva tempo; por favor, dê aos desenvolvedores um mês ou mais para preparar novas versões de suas distribuições! Até lá, você não pode instalar essa distribuição junto com o Qiskit 1.0. Para continuar usando essa distribuição, crie um novo ambiente virtual e use o Qiskit 0.45 ou 0.46 (ou qualquer versão que ela suporte) junto com esse outro pacote.

cuidado

Se você receber esse erro, não tente construir o ambiente chamando pip install várias vezes. Esses comandos provavelmente não falharão, mas você terá criado um ambiente inválido. Você provavelmente verá algumas das outras mensagens de erro descritas nesta seção.

Você também pode ler a documentação da Python Packaging Authority sobre resolução de conflitos.

pip é bem-sucedido, mas imprime erros após executar comandos pip install

Você pode ver um erro na saída do pip, como o seguinte:

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.

A primeira linha geralmente aparece literalmente (a partir do pip 23.3), mas a segunda linha muda dependendo do problema exato, e pode haver várias linhas como essa. O pip provavelmente indicará em seguida que fez o que você queria com sucesso, apesar da mensagem de erro.

Isso significa que o ambiente está em conflito e você não pode ter certeza de que funcionará corretamente. Para resolver o problema, examine a lista de mensagens do pip e determine se você precisa de todos os pacotes que têm requisitos conflitantes. Às vezes haverá conflitos reais entre dependências; talvez você precise de múltiplos ambientes virtuais para separar dependências que têm requisitos incompatíveis.

A escolha mais segura é iniciar um novo ambiente virtual (ou mais de um, se houver conflitos reais) e então excluir o que está em conflito.

Ao configurar ambientes virtuais, execute apenas um comando pip install que inclua todas as dependências de que você precisa. Essa é a maneira mais confiável para o pip encontrar um ambiente corretamente resolvido sem conflitos. Se você continuar tendo problemas com conflitos após configurar ambientes, evite executar outros comandos pip install ou pip uninstall; o pip não garante manter o ambiente coerente em comandos subsequentes.

nota

Se você está preocupado em trabalhar com múltiplos ambientes virtuais, fique tranquilo: o desenvolvimento e uso do Python frequentemente envolvem vários ambientes virtuais. É uma prática comum e recomendada criar novos para trabalhar em projetos separados. Quando terminar com um ambiente virtual, você pode simplesmente excluir seu diretório; não há razão para manter múltiplos ambientes permanentemente.

import qiskit lança ImportError

Ao executar import qiskit, você pode ver um erro 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.

dica

Você pode ter executado um comando pip install completamente válido, seguindo todas as recomendações deste guia, e ainda ver esta mensagem de erro. Isso não é sua culpa, mas a mensagem de erro ainda está correta e o Qiskit não pode ser carregado com segurança.

O erro significa que o Qiskit está instalado em um ambiente inválido que inclui tanto o Qiskit 1.0 quanto uma versão anterior. Isso é caracterizado pela distribuição qiskit-terra estar instalada junto com o Qiskit 1.0. Você pode verificar quais distribuições estão instaladas executando pip list, mas não pode corrigir isso simplesmente desinstalando qiskit-terra.

Infelizmente, qiskit>=1.0 e qiskit-terra são distribuições conflitantes e não podem ser instaladas juntas. Ainda mais infelizmente, não podemos comunicar esse conflito ao pip por causa de limitações no seu sistema de metadados.

Este erro surge com mais frequência em uma de duas situações:

  • Você executou algo como pip install 'qiskit>=1' something-else, e something-else tem um requisito em qiskit-terra.
  • Você tentou executar pip install -U qiskit em um ambiente existente.

Em ambos os casos, não há garantia de que o pip retornará uma mensagem útil para você.

dica

Uma forma de exigir que o pip proíba o qiskit-terra em comandos install individuais é usar um arquivo de restrições que define qiskit-terra em uma versão impossível. Por exemplo, um arquivo de restrições que inclui a linha qiskit-terra>=1.0 significa que, se uma dependência tentar instalar qiskit-terra, nenhuma versão publicada corresponderá aos requisitos.

Fornecemos esse arquivo em um GitHub Gist em https://qisk.it/1-0-constraints, que você pode usar assim:

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

Se um pacote exigir qiskit-terra, você verá uma falha de resolução.

Crie um ambiente funcional para o Qiskit 1.0

Não importa como isso aconteceu, é muito mais fácil criar um novo ambiente virtual.

Primeiro, precisamos descobrir quais pacotes estão introduzindo uma dependência em qiskit-terra. Usando o ambiente com problema, instale o pipdeptree do PyPI. Esta é uma ferramenta para gerar grafos de dependências:

pip install pipdeptree

Pergunte a ele quais pacotes estão introduzindo dependências em qiskit-terra e qiskit (esses são dois comandos separados):

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

As saídas podem ser algo como:

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]

No exemplo acima, temos duas distribuições que se declararam compatíveis com o Qiskit 1.0 (qiskit-aer e qiskit-ibm-provider), e uma que ainda tem uma dependência em qiskit-terra.

dica

Este exemplo tem uma estrutura de dependência plana. Você pode ver uma árvore muito mais profunda do que esta. Os pacotes que dependem diretamente de qiskit-terra (menor indentação) são os mais propensos a ser problemáticos, mas um mais abaixo na árvore pode ser problemático se depender de uma versão antiga específica de algum outro pacote que já foi atualizado.

Ver uma dependência em qiskit-terra pode significar uma de algumas coisas:

  • O dependente é um pacote antigo e não será atualizado para suportar o Qiskit 1.0.

    Neste caso, não há chance de usar o pacote com o Qiskit 1.0, e você precisará continuar usando uma versão anterior do Qiskit. Normalmente, isso é caracterizado pelo dependente estar em sua versão mais recente (assumindo que o ambiente é novo e você não o fixou em uma versão inferior) e tendo um requisito direto em qiskit-terra.

  • O dependente é um pacote mantido ativamente, mas ainda não suporta o Qiskit 1.0.

    Neste caso, você precisará esperar que os desenvolvedores lancem uma versão compatível — por favor, seja paciente! Normalmente, isso é caracterizado pela distribuição instalada não estar em sua versão mais recente, mesmo que o seu comando de instalação não tenha especificado uma versão. Você pode verificar a versão de lançamento mais recente da distribuição encontrando sua página em https://pypi.org/.

    O pip provavelmente pesquisou versões antigas do pacote até encontrar uma (possivelmente de meses ou anos atrás) que dependia apenas de qiskit-terra.

    É isso que aconteceu no exemplo acima. No momento em que este documento foi criado, qiskit-dynamics==0.4.4 era a versão de lançamento mais recente.

Se você construiu este ambiente a partir de vários comandos pip install (por exemplo, se o ambiente é antigo e foi atualizado), primeiro tente instalar todos os seus pacotes usando um único comando pip install quando construir um novo ambiente. Se o problema persistir, pelo menos um dos pacotes que você deseja provavelmente ainda não suporta o Qiskit 1.0, e o pip está encontrando uma versão antiga que acredita que funcionará porque não sabe sobre o conflito qiskit>=1/qiskit-terra.

Em vez disso, use os comandos do pipdeptree para identificar quais dependências ainda não suportam o Qiskit 1.0. Exclua quaisquer pacotes que ainda não suportem o Qiskit 1.0 ao construir um ambiente Qiskit 1.0, ou continue usando uma versão anterior do Qiskit. Consulte Crie o novo ambiente para obter instruções.

nota

O exemplo nesta seção foi gerado antes do lançamento do Qiskit 1.0.

A distribuição "antiga" em questão (qiskit-dynamics) estava se comportando corretamente; não era conhecido que ela suportava o Qiskit 1.0 ainda, então marcou isso em seus requisitos. Não é possível retroagir mudanças de requisitos para versões já lançadas, e o pip pesquisará arbitrariamente longe no passado para localizar algo que funcione ao construir um ambiente.

Crie um ambiente funcional para o Qiskit 0.45 ou 0.46

Se você tiver um ambiente com problema após tentar instalar o Qiskit 0.45 ou 0.46, a situação mais provável é que o pip instalou o Qiskit 1.0 porque tentou escolher as versões mais recentes dos pacotes, mesmo que não fosse necessário. A maneira mais fácil de corrigir isso é criar um novo ambiente virtual e, em seguida, executar um único comando pip install que tenha todos os pacotes que você precisa, além de uma entrada explícita 'qiskit<1'. Se o pip resolver com sucesso esse grafo de dependências, você deverá ter um ambiente virtual funcional. Se pelo menos uma distribuição exigir o Qiskit 1.0 ou superior, o pip deve fornecer uma mensagem de erro explicando isso, que se parece com a da seção sobre resoluções com falha.

Você também pode usar os comandos do pipdeptree listados em Crie um ambiente funcional para o Qiskit 1.0 a partir do ambiente com problema para determinar quais distribuições têm um requisito explícito em qiskit>=1.

Sou desenvolvedor, meus ambientes estão definitivamente corretos e ainda estou recebendo o erro

Primeiro: você deve ter absoluta certeza de que seus ambientes estão corretos. O teste que o Qiskit usa para determinar um ambiente com problema é bastante robusto; especificamente, ele consulta importlib.metadata para obter informações de distribuição sobre os pacotes instalados e verifica os números de versão retornados. O lado do Qiskit 1.0 do teste também verifica arquivos sentinela que estavam presentes em versões antigas do Qiskit e não no Qiskit 1.0.

Se você é um desenvolvedor do Qiskit, é possível que você tenha diretórios antigos qiskit.egg-info ou qiskit-terra.egg-info (ou *.dist-info) presentes no seu meta path (consulte sys.meta_path), deixados por instalações editáveis antigas. Em particular, verifique seu diretório de trabalho para qualquer diretório *.egg-info e *.dist-info. Se eles estiverem na raiz de um de seus repositórios com checkout, você pode excluí-los. O pior que pode acontecer é você precisar executar pip install -e . novamente, e mesmo isso é improvável, porque eles geralmente são apenas parte do processo de build do setuptools que não é limpo automaticamente.

Se as informações acima não ajudarem você e você tiver 100% de certeza de que seu ambiente está correto (ou você está deliberadamente tentando testar um ambiente com problema):

  1. Crie uma issue no Qiskit explicando como isso aconteceu e por que você tem certeza de que o ambiente está correto para que possamos corrigi-lo.
  2. Você pode suprimir a exceção definindo a variável de ambiente QISKIT_SUPPRESS_1_0_IMPORT_ERROR=1. _1_0_IMPORT_ERROR=1`.

_1_0_IMPORT_ERROR=1`.