Instale o novo pacote Qiskit v1.0
O Qiskit v1.0 utiliza uma estrutura de pacotes diferente das versões anteriores do Qiskit e provavelmente causará problemas em ambientes que utilizam pacotes que não estão preparados para o Qiskit v1.0.
Não tente atualizar um ambiente virtual existente do Python para o Qiskit v1.0 sem fazer uma cópia de segurança.
Não faremos alterações significativas na embalagem no futuro. Este é um evento pontual, por ocasião do lançamento do Qiskit v1.0, com o objetivo específico de garantir que o processo de empacotamento seja o mais simples possível no futuro.
Este guia está dividido nas seguintes seções. Você só precisa revisar as seções que são relevantes para você.
- Os usuários devem ler a seção Para usuários.
- Se você desenvolve ou mantém um pacote que depende do Qiskit, leia a seção Para desenvolvedores.
- Se você tiver problemas ao instalar ou importar o Qiskit v1.0, consulte a seção "Solução de problemas".
Se você estiver interessado em entender a estrutura antiga dos pacotes e por que ela mudou, consulte a visão geral das alterações nos pacotes que causam incompatibilidade.
Para usuários
Você deve iniciar um novo ambiente virtual para instalar o Qiskit v1.0. É muito complicado e propenso a erros atualizar uma instalação existente diretamente para o Qiskit v1.0.
Os exemplos desta seção usam o módulo venv que faz parte da biblioteca padrão Python.
Se você usar uma ferramenta diferente, como virtualenv ou conda, consulte a respectiva documentação para obter ajuda.
Para os comandos Linux e macOS, é usada uma sintaxe semelhante à do bash. PowerShell é usado para comandos do Windows.
Crie o novo ambiente
-
Crie um novo ambiente virtual em cada diretório de projeto em que estiver trabalhando, usando sua versão preferida do Python 3.8 ou posterior.
python3 -m venv .venvpython3 -m venv .venvpython -m venv .venv
-
Ativar o ambiente.
source .venv/bin/activatesource .venv/bin/activate.venv\Scripts\activate.ps1 -
Instale os pacotes conforme desejado. Você deve fazer isso usando apenas um comando
pip installcom todas as dependências.pip install 'qiskit>=1'Opcionalmente, você pode incluir pacotes adicionais, incluindo-os como argumentos. Por exemplo:
pip install 'qiskit>=1' jupyterlab pandas matplotlibA versão v1.0 do Qiskit inclui alterações que quebram a compatibilidade, por isso vários pacotes estão marcados como ainda não compatíveis com ela. Portanto, é possível que você encontre erros até
pipque novas versões desses pacotes sejam lançadas. Versões antigas dos pacotes também podem depender do pacote antigoqiskit-terra. Esses pacotes podem não apresentar erros ao executar este comando, mas podem gerar um erro ao executarimport qiskit. Você não deve instalar nenhum pacote que dependa diretamente deqiskit-terra.TipUma maneira de exigir que
pipproíbaqiskit-terrade comandos individuais deinstallé usar um arquivo de restrições que exija queqiskit-terraseja definido como uma versão impossível. Por exemplo, um arquivo de restrições que inclua a linhaqiskit-terra>=1.0significará que, se uma dependência tentar instalarqiskit-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 desta forma:
pip install -c https://qisk.it/1-0-constraints qiskit [other packages]Se um pacote exigir
qiskit-terra, você verá uma falha na resolução.CautionNão instale pacotes incompatíveis com o Qiskit v1.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ê já tiver um ambiente configurado, pode usar
pipdeptreepara consultar os requisitos dos pacotes instalados e verificar se eles exigemqiskit<1.qiskit<1Para quem precisar, verifique se há atualizações que tornem o software compatível com o Qiskit: v1.0.Se encontrar problemas, consulte a seção de solução de problemas ou pergunte no Qiskit Slack. Se você acha que há um bug, pode criar um problema no Qiskit.
-
Se não estiver planejando usar o ambiente imediatamente, use o comando
deactivatepara deixá-lo.
Use o novo ambiente
Sempre que iniciar uma nova sessão de linha de comando, você deverá navegar até o diretório do projeto e "ativar" o ambiente executando o comando activate :
source .venv/bin/activatesource .venv/bin/activate.venv\Scripts\activate.ps1Para desenvolvedores
Se você mantém um pacote que depende do Qiskit, use estas informações para saber como declarar corretamente sua compatibilidade e realizar testes com o Qiskit v1.0.
Recomendações para requisitos
Recomendamos que seu pacote tenha a versão qiskit>=0.45,<1 (ou outra versão mínima adequada) caso você não tenha certeza se o pacote é compatível com o Qiskit v1.0.
Essa é a mesma recomendação feita para a compatibilidade entre o NumPy e o 2.0.
Uma versão candidata do Qiskit v1.0, versão 1.0.0rc1, será lançada em 1º de fevereiro de 2024. Você deve testar seu pacote em relação a isso e, assim que possível, lançar uma nova versão (compatível) do seu pacote com o requisito superior desbloqueado.
Recomendações para testes com o Qiskit v1.0
Essas recomendações se aplicam aos testes proativos no ramo Qiskit main e aos testes na versão candidata do v1.0.0rc1 (e versões posteriores, se aplicável).
Não recomendamos, inicialmente, ativar a proteção de ramificação ao concluir a integração contínua (CI) em relação ao ramo Qiskit main , pois alterações no Qiskit podem impedir a fusão de PRs.
Após o lançamento das versões candidatas do Qiskit e depois que todas as dependências do seu pacote passarem a ser compatíveis com o Qiskit v1.0, recomendamos que você proteja o branch com base na versão candidata mais recente, caso a compilação seja bem-sucedida, para garantir que o pacote continue compatível com o Qiskit v1.0.
Se nem o seu pacote nem nenhuma de suas dependências transitivas tiverem um requisito definido em qiskit<1, você deverá 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 totalmente válido.
Se o único componente do gráfico de dependências do seu pacote que possui um pin de qiskit<1 requisito for o seu próprio pacote, talvez seja recomendável que sua suíte de CI primeiro aplique uma correção temporária ao seu arquivo de requisitos para permitir o uso do Qiskit v1.0 e, em seguida, instale o ambiente em uma única etapa, como antes.
Como alternativa, utilize as regras a seguir para atualizações de ambiente de uso geral, mas mude para a resolução de ambiente único assim que for possível.
Se pelo menos uma de suas dependências transitivas ainda não tiver uma versão de lançamento que ofereça suporte ao Qiskit v1.0, você deverá fazer alterações manualmente. Existem várias estratégias que podem ser tentadas, listadas aproximadamente por ordem de preferência (da mais recomendável à menos recomendável):
- Instale a dependência problemática a partir de sua própria ramificação
main, se sua versão de desenvolvimento tiver relaxado o pino, para que você possa criar 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 manualmente essa configuração para usar o Qiskit v1.0.
Atualizar manualmente um ambiente existente
Esse processo cria deliberadamente um ambiente inválido. Portanto, qualquer teste que o utilize tem menor validade. Os testes podem parecer ter sido aprovados, mas isso não garante que o pacote seja compatível com o Qiskit v1.0. Isso pode ocorrer porque o ambiente não é auto-consistente e pode conter arquivos que não existem em um ambiente válido, ou porque o comportamento de um pacote substituído pode mudar com o Qiskit v1.0.
Se alguma de suas dependências estiver fixada qiskit<1 mesmo em seu branch de desenvolvimento, ela pode não funcionar de forma alguma com o Qiskit v1.0, e se seus testes não puderem ser executados por causa disso, talvez você tenha que esperar que elas (ou trabalhar com elas) se tornem compatíveis.
Para fazer upgrade de um ambiente in situ, siga estas etapas:
-
Crie um ambiente como de costume, garantindo que não haja pacotes que estendam o espaço de nomes
qiskitouqiskit.providersinstalados. -
Desinstale os sites
qiskiteqiskit-terrapara ter certeza de que nenhum deles está presente:
pip uninstall --yes qiskit qiskit-terraNesse momento, o site-packages do ambiente não deve conter um diretório qiskit . Não é necessário verificar isso em cada execução de CI, mas se estiver depurando um script localmente, siga estas etapas para verificar:
- Execute o seguinte comando no site
pythondo ambiente virtual:
import site
print(site.getsitepackages())-
Verifique se esses diretórios não contêm um diretório
qiskit. Se isso acontecer, é provável que você tenha pacotes de extensão de namespace instalados, e você deve encontrá-los e remover a dependência. -
Instale a versão desejada do Qiskit v1.0 usando um destes comandos:
- Depois que o candidato à versão desejado for publicado:
pip install 'qiskit==1.0.0rc1' - Para uma dependência de
main-branch (ou substitua o identificador de revisãogitque você preferir após@).pip install 'git+https://github.com/Qiskit/qiskit.git@main'
Agora você tem um ambiente no qual o Qiskit permite que você faça testes. Se import qiskit resultar em ImportError, ou se você estiver com dificuldades para encontrar as dependências, consulte as orientações na seção sobre as proteções de ambiente inválido no Qiskit.
Exemplo de manual de fluxos de trabalho de ações de GitHub
Os fluxos de trabalho a seguir configuram uma tarefa agendada para ser executada durante a noite. Esta tarefa configura um ambiente de teste para o Qiskit v1.0 e executa pytest (ou quaisquer etapas de teste necessárias).
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: pytestPara um pacote que tem dependências transitivas inevitáveis que fixam qiskit<1, crie 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: pytestExemplo de tox configuração
A seguir, apresentamos exemplos de tox.ini seções para criar um ambiente de teste para o Qiskit v1.0 e executar pytest (ou quaisquer etapas de teste necessárias).
Se nada impedir a instalação do Qiskit v1.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 um pino inevitável em qiskit<1, recomendamos fazer esse teste usando a construção manual do ambiente, como na seção acima, porque tox introduz várias complexidades por ser mais rigoroso quanto ao isolamento do ambiente e à ordem de instalação.
Esse é o comportamento correto em 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.Resolução de problemas
As alterações na estrutura de pacotes do Qiskit v1.0 são complexas, e a ferramenta pip padrão do Python não é suficientemente abrangente em alguns aspectos para que possamos comunicar as mudanças nas estruturas de distribuição a ela, o que, infelizmente, pode causar problemas aos usuários.
Procuramos fazer com que o Qiskit apresente uma falha de forma rápida e clara caso detecte um ambiente inválido, sem gerar falsos positivos.
Entendemos que os usuários possam achar incômodo receber a mensagem de erro, mas, pela nossa experiência, é muito melhor estar ciente do problema imediatamente do que deixar que as coisas pareçam estar funcionando à primeira vista, apenas para que falhem de forma imperceptível no futuro.
Esta seção contém erros de empacotamento que podem ser vistos 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: Não existe nenhum módulo chamado 'qiskit'”
Python não consegue encontrar sua instalação do Qiskit.
Se você instalou definitivamente o Qiskit, provavelmente não tem o ambiente virtual correto ativado. Consulte a seção sobre ativação de um ambiente virtual para obter instruções.
Se estiver usando o Jupyter e vir isso, certifique-se de que o Jupyter esteja instalado no mesmo ambiente virtual que o Qiskit.
Saia do Jupyter, ative o ambiente virtual Qiskit na linha de comando, execute pip install jupyterlab (ou qualquer outra interface de notebook que você use) e reabra o Jupyter.
import qiskit é bem-sucedido, mas tentar fazer qualquer coisa retorna “ "AttributeError: o módulo 'qiskit' não tem atributo '...'”
Isso provavelmente significa que seu ambiente tinha uma versão antiga do Qiskit junto com um pacote que estendia seu espaço de nome (como versões antigas do Qiskit Aer ou o há muito obsoleto Qiskit IBM Q® Provider) e, em seguida, o Qiskit foi desinstalado. O mais fácil é iniciar um novo ambiente virtual e instalar nele apenas pacotes recentes e não obsoletos.
Se você acabou de iniciar um novo ambiente virtual ou tem certeza de que os pacotes legados não são o problema, verifique se o diretório de trabalho atual (o diretório em que a sessão do shell estava quando você iniciou o Python / Jupyter) não contém uma pasta chamada qiskit.
Python pesquisam o diretório de trabalho atual muito cedo no caminho de pesquisa ao tentar import um módulo, portanto, um diretório com um nome duplicado pode causar problemas de importação.
pip recusa-se a instalar alguns pacotes juntos
Após executar um comando pip install com muitos itens, você poderá ver um erro como este:
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-conflictsIsso 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 v1.0, isso provavelmente ocorre porque uma das distribuições que você está tentando instalar contém um pré-requisito como qiskit<1.0.
Isso significa que os desenvolvedores dessa distribuição a marcaram como (ainda) não compatível com o Qiskit v1.0.
Você pode perguntar (educadamente) a esses desenvolvedores quando eles lançarão uma nova versão do pacote que seja compatível com o Qiskit v1.0, mas primeiro verifique se já não há alguma solicitação de correção ou pull request aberta solicitando isso em qualquer lugar onde eles aceitem comentários. Lembre-se de que isso leva tempo; por favor, dê aos desenvolvedores cerca de um mês para prepararem novas versões de suas distribuições! Até lá, não é possível instalar essa distribuição junto com o Qiskit v1.0. Para continuar usando essa distribuição, crie um novo ambiente virtual e utilize o Qiskit 0.45 ou 0.46 (ou qualquer versão compatível) em conjunto com esse outro pacote.
Se você receber esse erro, não tente criar o ambiente chamando pip install várias vezes.
Esses comandos provavelmente não falharão, mas você terá criado um ambiente inválido.
Provavelmente, você verá algumas das outras mensagens de erro descritas nesta seção.
Você também pode ler a documentação da autoridade de empacotamento Python sobre resolução de conflitos.
pip é bem-sucedido, mas imprime erros após executar pip install os comandos
Talvez você veja um erro na saída do site 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 v1.0.0 which is incompatible.A linha superior geralmente aparece literalmente (como em pip 23.3 ), mas a segunda linha muda dependendo do problema exato, e pode haver várias linhas como essa.
pip provavelmente indicará que ele 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 ele funcionará corretamente.
Para resolver o problema, examine a lista de mensagens de pip e determine se você precisa de todos os pacotes que têm requisitos conflitantes.
Às vezes, haverá conflitos reais entre as dependências; talvez você precise de vários ambientes virtuais para separar as dependências que têm requisitos incompatíveis.
A opção mais segura é iniciar um novo ambiente virtual (ou mais de um, se houver conflitos reais) e, em seguida, excluir o que estiver 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 de o pip encontrar um ambiente devidamente resolvido e sem conflitos.
Se você continuar tendo problemas com conflitos depois de configurar os ambientes, evite executar outros comandos pip install ou pip uninstall ; o pip não garante a manutenção da coerência do ambiente nos comandos subsequentes.
Se você estiver preocupado em trabalhar com vários ambientes virtuais, fique tranquilo, pois o desenvolvimento e o uso do Python geralmente envolvem vários ambientes virtuais. É comum e uma boa prática criar novos projetos para trabalhar em projetos separados. Quando terminar de usar um ambiente virtual, você pode simplesmente excluir seu diretório; não há motivo para manter vários ambientes permanentemente.
import qiskit aumentos ImportError
Ao executar import qiskit, você poderá ver um erro como este:
ImportError: O Qiskit está instalado em um ambiente inválido que possui o Qiskit 1.0 + e uma versão anterior. Você deve criar um novo ambiente virtual e garantir que não misture as dependências entre o Qiskit pre-1.0 e o post-1.0. Todos os pacotes que dependem do 'qiskit-terra' não são compatíveis com o Qiskit 1.0 e precisarão ser atualizados. Infelizmente, o Qiskit não pode impor esse requisito durante a resolução do ambiente.
Você pode ter executado um comando pip install totalmente válido, seguindo todas as recomendações deste guia, e ainda assim ver essa mensagem de erro.
Isso não é culpa sua, 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 contém tanto o Qiskit v1.0 quanto uma versão anterior.
Isso se caracteriza pelo fato de qiskit-terra a distribuição ser instalada junto com o Qiskit v1.0.
Você pode verificar quais distribuições estão instaladas executando o comando pip list, mas não é possível resolver isso simplesmente desinstalando o qiskit-terra.
Infelizmente, qiskit>=1.0 e qiskit-terra são distribuições conflitantes e não podem ser instaladas juntas.
Infelizmente, não podemos comunicar esse conflito a pip devido a limitações em seu sistema de metadados.
Esse erro ocorre com mais frequência em uma das duas situações:
- Você executou algo como
pip install 'qiskit>=1' something-else, esomething-elsetem um requisito emqiskit-terra. - Você tentou executar o
pip install -U qiskitem um ambiente existente.
Em ambos os casos, não há garantia de que o pip retornará uma mensagem útil para você.
Uma maneira de exigir que pip proíba qiskit-terra de comandos individuais de install é usar um arquivo de restrições que exija que qiskit-terra seja definido como uma versão impossível.
Por exemplo, um arquivo de restrições que inclua a linha qiskit-terra>=1.0 significará 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 desta forma:
pip install -c https://qisk.it/1-0-constraints qiskit [other packages]Se um pacote exigir qiskit-terra, você verá uma falha na resolução.
Criar um ambiente de trabalho para o Qiskit v1.0
Independentemente de 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 quebrado, instale o pipdeptree em PyPI. Essa é uma ferramenta para gerar gráficos de dependência:
pip install pipdeptreePergunte a ele quais pacotes estão introduzindo dependências em qiskit-terra e qiskit (esses são dois comandos separados):
pipdeptree --reverse --package qiskit-terrapipdeptree --reverse --package qiskitOs resultados podem ser semelhantes:
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 v1.0 (qiskit-aer e qiskit-ibm-provider), e uma que ainda depende do qiskit-terra.
Este exemplo é uma estrutura de dependência plana.
Você pode ver uma árvore muito mais profunda do que essa.
Os pacotes que dependem diretamente do qiskit-terra (indentação mais baixa) provavelmente serão os problemáticos, mas um pacote mais abaixo na árvore pode ser problemático se depender de uma versão antiga específica de algum outro pacote que já tenha sido atualizado.
O fato de ver uma dependência em qiskit-terra pode significar algumas coisas:
-
O pacote "dependent" é antigo e não será atualizado para oferecer suporte ao Qiskit v1.0.
Nesse caso, não é possível usar o pacote com o Qiskit v1.0, e você precisará continuar usando uma versão anterior do Qiskit. Normalmente, isso se caracteriza pelo fato de a dependência estar em sua versão mais recente (supondo que o ambiente seja novo e que você não tenha fixado uma versão anterior) e ter uma dependência direta de
qiskit-terra. -
A dependência é um pacote que está sendo mantido ativamente, mas ainda não oferece suporte ao Qiskit v1.0.
Nesse caso, você precisará aguardar que os desenvolvedores lancem uma versão compatível - seja paciente! Normalmente, isso é caracterizado pelo fato de a distribuição instalada não estar em sua versão mais recente, mesmo que o comando de instalação não tenha especificado uma versão. Você pode verificar a versão mais recente da distribuição encontrando sua página em https://pypi.org/.
pipprovavelmente procurou versões antigas do pacote até encontrar uma (possivelmente de meses ou anos atrás) que dependesse apenas doqiskit-terra.Foi isso que aconteceu no exemplo acima. No momento em que este documento foi criado,
qiskit-dynamics==0.4.4era a versão de lançamento mais recente.
Se você criou esse ambiente a partir de vários pip install comandos (por exemplo, se o ambiente for antigo e tiver sido atualizado), tente primeiro instalar todos os seus pacotes usando um único pip install comando ao criar um novo ambiente.
qiskit-terra Se o problema persistir, é provável que pelo menos um dos pacotes que você deseja ainda não seja compatível com o Qiskit v1.0, e pip o sistema esteja localizando uma versão antiga que acredita que funcionará, pois não tem conhecimento do conflito qiskit>=1.
Em vez disso, use os pipdeptree comandos para identificar quais dependências ainda não oferecem suporte ao Qiskit v1.0.
Exclua todos os pacotes que ainda não sejam compatíveis com o Qiskit v1.0 ao configurar um ambiente Qiskit v1.0, ou continue usando uma versão anterior do Qiskit.
Consulte “Criar o novo ambiente” para obter instruções.
O exemplo desta seção foi gerado antes do lançamento do Qiskit v1.0.
A "antiga" distribuição em questão (qiskit-dynamics) estava funcionando corretamente; como ainda não se sabia se ela oferecia suporte ao Qiskit v1.0, isso foi indicado nos seus requisitos.
Não é possível retroagir alterações nos requisitos para versões lançadas anteriormente, e pip o sistema irá procurar em versões anteriores até encontrar algo que funcione ao configurar um ambiente.
Crie um ambiente de trabalho para o Qiskit 0.45 ou 0.46
Se o seu ambiente estiver com problemas após tentar instalar o Qiskit em 0.45 ou 0.46, o mais provável é que pip o Qiskit tenha sido instalado em v1.0, pois o sistema tentou selecionar as versões mais recentes dos pacotes, mesmo que isso não fosse necessário.
A maneira mais fácil de resolver isso é criar um novo ambiente virtual e, em seguida, executar um único pip install comando que inclua todos os pacotes necessários, além de uma entrada explícita 'qiskit<1' .
Se pip esse gráfico de dependências for resolvido com sucesso, você deverá ter um ambiente virtual em funcionamento.
Se pelo menos uma distribuição exigir o Qiskit v1.0 ou uma versão superior, pip deverá aparecer uma mensagem de erro explicando isso, semelhante à apresentada na seção sobre resoluções com falha.
Você também pode usar os comandos pipdeptree listados em Criar um ambiente de trabalho para o Qiskit 1.0 de dentro do ambiente quebrado para determinar quais distribuições têm um requisito explícito em qiskit>=1.
Sou desenvolvedor, meus ambientes estão definitivamente corretos e ainda assim continuo recebendo o erro
Primeiro: você deve ter certeza absoluta de que suas configurações de ambiente estão corretas.
O teste que o Qiskit utiliza para identificar um ambiente com falhas é bastante robusto; mais especificamente, ele consulta importlib.metadata as informações de distribuição dos pacotes instalados e verifica os números de versão retornados.
A parte do teste relacionada ao Qiskit v1.0 também verifica se há arquivos sentinela que estavam presentes em versões antigas do Qiskit, mas não no Qiskit v1.0.
Se você for um desenvolvedor do Qiskit, é possível que tenha diretórios antigos qiskit.egg-info ou qiskit-terra.egg-info (ou *.dist-info) presentes em seu meta path (consulte sys.meta_path), remanescentes de instalações editáveis antigas.
Em particular, verifique se há diretórios *.egg-info e *.dist-info em seu diretório de trabalho.
Se eles estiverem na raiz de um de seus repositórios verificados, você poderá excluí-los. O pior que pode acontecer é você precisar acessar pip install -e . novamente, e mesmo isso é improvável, pois normalmente isso é apenas parte do processo de compilação do setuptools que não é limpo.
Se as informações acima não o ajudarem e você tiver 100% de certeza de que seu ambiente é sólido (ou se estiver deliberadamente tentando testar um ambiente quebrado):
- Crie um problema no Qiskit explicando como isso aconteceu e por que você tem certeza de que o ambiente está correto para que possamos corrigi-lo.
- Você pode suprimir a exceção definindo a variável de ambiente
QISKIT_SUPPRESS_1_0_IMPORT_ERROR=1.