三浦ノート

自分の経験したことを検索可能にしていくブログ.誰かの役に立ってくれれば嬉しいです.

Qiskit.Aqua を使おうとしたら,numpy+mklを要求されたこと.

環境

win10,python3.7

>>>import qiskit
>>>qiskit.__qiskit_version__
{'qiskit-terra': '0.9.0',
 'qiskit-ignis': '0.2.0',
 'qiskit': '0.12.0',
 'qiskit-aer': '0.3.0',
 'qiskit-ibmq-provider': '0.3.2',
 'qiskit-aqua': '0.6.0'}

エラー内容

Qiskit.Aquaのモジュールをimportしようとしたら,以下のようなエラーが出ました.

>>> from qiskit.aqua.algorithms.quantum_algorithm.QuantumAlgorithm import Shor
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-8-f455b2b00a46> in <module>
----> 1 from qiskit.aqua.algorithms.quantum_algorithm.QuantumAlgorithm import Shor

d:\programming\qiskit\qiskitenv\lib\site-packages\qiskit\aqua\__init__.py in <module>
     27                         register_pluggable,
     28                         deregister_pluggable)
---> 29 from .utils.backend_utils import (get_aer_backend,
     30                                   get_backends_from_provider,
     31                                   get_backend_from_provider,

d:\programming\qiskit\qiskitenv\lib\site-packages\qiskit\aqua\utils\__init__.py in <module>
     25                              split_dataset_to_data_and_labels,
     26                              map_label_to_class_name, reduce_dim_to_via_pca)
---> 27 from .qp_solver import optimize_svm
     28 from .circuit_factory import CircuitFactory
     29 from .circuit_cache import CircuitCache

d:\programming\qiskit\qiskitenv\lib\site-packages\qiskit\aqua\utils\qp_solver.py in <module>
     16 
     17 import numpy as np
---> 18 from cvxopt import matrix, solvers
     19 
     20 logger = logging.getLogger(__name__)

d:\programming\qiskit\qiskitenv\lib\site-packages\cvxopt\__init__.py in <module>
     48 along with this program.  If not, see <http://www.gnu.org/licenses/>."""
     49 
---> 50 import cvxopt.base
     51 
     52 def copyright():

ImportError: DLL load failed: 指定されたモジュールが見つかりません。

エラーを見てみると,cvxopt.base のimport に失敗していることが分かります.

原因・解決

調べたところ,cvxoptはnumpy+mklがないと使えないそうでした.

anacondaの環境だと初めから入っているそうですが,私のはvenvの環境だったのでただのnumpyが入っていました.

ということで もともと入っていたnumpyはアンインストールして,次のページ Python Extension Packages for Windows - Christoph Gohlke にある numpy‑1.17.2+mkl‑cp37‑cp37m‑win_amd64.whl をダウンロードしてpipインストールしました.

無事 numpy+mklがインストールされたあと,Qiskit.Aquaのモジュールを問題なくimportできるようになりました.

参考

python 3.x - import cvxopt.base: the specified module could not be found - Stack Overflow

【Python】.whlファイルをpipでインストールしようとして「○○.whl is not a supported wheel on this platform.」エラーが出た時の対応 - Qiita

numpy で MKL を使う - Qiita