Не удается импортировать Aer из Qiskit 0.7
Я создал новую виртуальную среду в Anaconda и установил несколько пакетов, используя pip (а именно, numpy, scipy, matplotlib, qiskit и, возможно, еще 1 или 2). Я открываю интерпретатор и пытаюсь импортировать модуль из Qiskit:
from qiskit import Aer
В результате я получаю ImportError: cannot import name 'Aer'
, Насколько я понимаю, либо Qiskit 0.7 имеет другую структуру модулей (которую я нигде не могу найти в документации), либо что моя установка имеет какой-то конфликт. Как узнать, в чем дело и как это исправить?
РЕДАКТИРОВАТЬ: у меня есть система двойной загрузки. Проблема возникает в Anaconda на Windows 10, но не на Ubuntu 18 на чистом Python. Так что я думаю, что это должно быть что-то с Анакондой, а не с Qiskit.
РЕДАКТИРОВАТЬ 2: Я сделал чистую установку Python (без Anaconda), и проблема остается.
6 ответов
У меня такая же проблема. Я посмотрел на репозиторий на GitHub qiskit terra ( https://github.com/Qiskit/qiskit-terra) и в примерах они используют BasicAer. Итак, я считаю, что они переименованы в модуль.
Действительно, у меня также была та же проблема: Anaconda 3 на Windows 10. У меня позже были те же проблемы на образе сборки travis CI python 3.5 и 3.6. Для обоих у меня было похожее, но разное решение. Сходство заключается в том, что, похоже, отсутствует зависимость. Код симулятора написан на C++ или, может быть, сейчас Cython. Поэтому они используют некоторые зависимости, которых может не быть в вашей настройке. На этом сходство закончилось. Что я сделал:
Настройка Windows 10 / Anaconda
С помощью обходчика зависимостей http://www.dependencywalker.com/ я обнаружил, что openblas.dll отсутствует как зависимость. Интересно, что в устаревших симуляторах команда qiskit предоставила один. Таким образом, вы можете использовать его или скачать (и переименовать!!) последний бинарный файл с https://www.openblas.net/. Затем скопируйте его в папку вашего сайта-пакетов. Вы знаете, что получили правильную папку, когда вы найдете файлы с именами сортировки
- unitary_controller_wrapper.pyd
- statevector_controller_wrapper.pyd
- qasm_controller_wrapper.pyd
Travis CI python> = 3.5 изображение
Здесь, с другой стороны, я был в растерянности с тем же объяснением (и решением), поэтому я посмотрел в хранилище qiskit-aer .travis
настроить. Здесь вы видите, что они используют (среди других директив) - sudo apt-get -y install g++-7
- sudo apt-get -y install libopenblas-dev
Я использовал это для моего travis CI и - вуаля - это работает. До этого я пользовался ldd
а также readelf
и он указал на какую-то библиотеку, которую я не помню, но похоже, что от этого зависит qiskit-aer, и вы получите это с более свежей версией g++.
Интересно, решит ли это ваши проблемы?
Чтобы решить эту проблему, попробуйте импортировать Aer отдельно. Например:
from qiskit import QuantumCircuit, QuantumRegister, execute, Aer, IBMQ
Надеюсь, это ответит на ваш вопрос
Чтобы решить эту проблему, я установил qiskit-aer.
pip install qiskit qiskit-aer
А затем импортируйте через него Aer.
from qiskit_aer.aerprovider import AerSimulator
Это, вероятно, проблема между
pip install qiskit==0.27.0
а также
conda install qiskit==0.27.0
что conda (или jupyter) не может использовать qiskit, который установлен непосредственно в pip. Поэтому я предлагаю вам переустановить в conda.