我在 Anaconda 中创建了一个新的虚拟环境,并使用 pip 安装了多个软件包(即 numpy、scipy、matplotlib、qiskit 以及可能还有 1 个或 2 个以上)。我打开解释器并尝试从 Qiskit 导入模块:
from qiskit import Aer
结果,我得到了
ImportError: cannot import name 'Aer'
。我的理解是 Qiskit 0.7 具有不同的模块结构(我在文档中找不到)或者我的设置存在某种冲突。我如何知道是什么情况以及如何解决?
编辑:我有双启动系统。该问题出现在 Windows 10 上的 Anaconda 上,但在纯 Python 上的 Ubuntu 18 上没有出现。所以我认为这一定是 Anaconda 而不是 Qiskit 的问题。
编辑2:我已经全新安装了Python(没有Anaconda),但问题仍然存在。
我也有同样的问题。我查看了 qiskit terra 的 GitHub 上的存储库(https://github.com/Qiskit/qiskit-terra),并在示例中使用了 BasicAer。所以,我认为他们重命名为模块。
事实上,我也遇到了同样的问题:Windows 10 上的 Anaconda 3。后来我在 travis CI python 3.5 和 3.6 构建映像上遇到了同样的问题。对于两者,我都有一个相似但不同的解决方案。相似之处在于它似乎缺少一个依赖项。模拟器的代码是用 C++ 或现在的 Cython 编写的。因此,他们使用了您的设置可能没有的一些依赖项。 相似之处到此结束。我做了什么:
使用依赖项walker http://www.dependencywalker.com/ 我发现 openblas.dll 作为依赖项丢失。有趣的是,qiskit 团队在旧版模拟器中提供了一个。因此,您可以使用这个或从 https://www.openblas.net/ 下载(并重命名!!)最新的二进制文件。然后将其复制到您的 site-packages 文件夹中。当您找到具有此类名称的文件时,您就知道您找到了正确的文件夹
另一方面,我对相同的解释(和解决方案)感到困惑,所以我研究了 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
我希望这能回答你的问题
尝试以下操作:
from qiskit.providers.aer import Aer
可能是
pip install qiskit==0.27.0
和conda install qiskit==0.27.0
之间的问题,conda(或jupyter)无法使用直接安装在pip中的qiskit。
因此,我建议你应该在 conda 中重新安装。
我解决这个问题的方法是安装qiskit-aer。
pip install qiskit qiskit-aer
然后通过它导入 Aer。
from qiskit_aer.aerprovider import AerSimulator