在 python3.7 中安裝 qutip 包會報錯
我正在使用 Python 3.7.3 執行 Linux Mint 19.1,並嘗試安裝 qutip 包。我已經安裝了以下內容,因此應該滿足依賴項:
NumPy-1.16.4 SciPy-1.3.0 Maplotlib-3.1.0 Cython-0.29.10 GCC-8.0.1
我不確定
Python Header
依賴關係,但我跑了sudo apt-get install python3.7-dev
沒有錯誤,因為這是我在Google搜尋時唯一能找到的東西。當我嘗試
qutip
使用安裝時,pip
我得到error: invalid command 'bdist_wheel'
了兩次,Failed building wheel for py-postgresql
然後Failed to build qubit py-postgresql
它說安裝成功,請參閱終端的完整列印:$ python3.7 -m pip install qubit Collecting qubit Using cached https://files.pythonhosted.org/packages/7e/fb/b9f75dba12698a1c394d9732d6d05008cc8a4d1d4854fc7201792e908626/qubit-0.0.1.tar.gz Collecting Flask==0.11.1 (from qubit) Using cached https://files.pythonhosted.org/packages/63/2b/01f5ed23a78391f6e3e73075973da0ecb467c831376a0b09c0ec5afd7977/Flask-0.11.1-py2.py3-none-any.whl Collecting py-postgresql==1.1.0 (from qubit) Using cached https://files.pythonhosted.org/packages/4c/cf/43d0287866f30f8b6f10ece19568fcda5477346c0f63bf5e9fb5c5eef121/py-postgresql-1.1.0.zip Collecting pytest==3.0.3 (from qubit) Using cached https://files.pythonhosted.org/packages/a4/e9/bf75a9a91c4a545bad262937d1defa90d95ac912118a706406e21aef889a/pytest-3.0.3-py2.py3-none-any.whl Collecting click>=2.0 (from Flask==0.11.1->qubit) Using cached https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl Collecting Jinja2>=2.4 (from Flask==0.11.1->qubit) Using cached https://files.pythonhosted.org/packages/1d/e7/fd8b501e7a6dfe492a433deb7b9d833d39ca74916fa8bc63dd1a4947a671/Jinja2-2.10.1-py2.py3-none-any.whl Collecting Werkzeug>=0.7 (from Flask==0.11.1->qubit) Using cached https://files.pythonhosted.org/packages/9f/57/92a497e38161ce40606c27a86759c6b92dd34fcdb33f64171ec559257c02/Werkzeug-0.15.4-py2.py3-none-any.whl Collecting itsdangerous>=0.21 (from Flask==0.11.1->qubit) Using cached https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl Collecting py>=1.4.29 (from pytest==3.0.3->qubit) Using cached https://files.pythonhosted.org/packages/76/bc/394ad449851729244a97857ee14d7cba61ddb268dce3db538ba2f2ba1f0f/py-1.8.0-py2.py3-none-any.whl Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->Flask==0.11.1->qubit) Using cached https://files.pythonhosted.org/packages/98/7b/ff284bd8c80654e471b769062a9b43cc5d03e7a615048d96f4619df8d420/MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl Building wheels for collected packages: qubit, py-postgresql Running setup.py bdist_wheel for qubit ... error Complete output from command /usr/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-bohuey6f/qubit/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpy8xqxz6ipip-wheel- --python-tag cp37: usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: -c --help [cmd1 cmd2 ...] or: -c --help-commands or: -c cmd --help error: invalid command 'bdist_wheel' ---------------------------------------- Failed building wheel for qubit Running setup.py clean for qubit Running setup.py bdist_wheel for py-postgresql ... error Complete output from command /usr/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-bohuey6f/py-postgresql/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpl3nlfezopip-wheel- --python-tag cp37: usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: -c --help [cmd1 cmd2 ...] or: -c --help-commands or: -c cmd --help error: invalid command 'bdist_wheel' ---------------------------------------- Failed building wheel for py-postgresql Running setup.py clean for py-postgresql Failed to build qubit py-postgresql Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, Flask, py-postgresql, py, pytest, qubit Running setup.py install for py-postgresql ... done Running setup.py install for qubit ... done Successfully installed Flask-0.11.1 Jinja2-2.10.1 MarkupSafe-1.1.1 Werkzeug-0.15.4 click-7.0 itsdangerous-1.1.0 py-1.8.0 py-postgresql-1.1.0 pytest-3.0.3 qubit-0.0.1 In ~/.local/lib/python3.7/site-packages
然後我可以看到兩個名為
qutip
andqutip-4.3.1-py3.7.egg-info
in 的目錄,~/.local/lib/python3.7/site-packages
但如果我執行python3.7
並嘗試import qutip
一個ImportError
for 的東西IndexMixin
,一個ModuleNotFoundError
forapt_pkg
,請查看完整的列印輸出。$ python3.7 Python 3.7.3 (default, Apr 3 2019, 19:16:38) [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import qutip Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/kajsa/.local/lib/python3.7/site-packages/qutip/__init__.py", line 171, in <module> from qutip.qobj import * File "/home/kajsa/.local/lib/python3.7/site-packages/qutip/qobj.py", line 60, in <module> from qutip.fastsparse import fast_csr_matrix, fast_identity File "/home/kajsa/.local/lib/python3.7/site-packages/qutip/fastsparse.py", line 37, in <module> from scipy.sparse.sputils import (upcast, upcast_char, to_native, isdense, isshape, ImportError: cannot import name 'IndexMixin' from 'scipy.sparse.sputils' (/home/kajsa/.local/lib/python3.7/site-packages/scipy/sparse/sputils.py) Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook from apport.fileutils import likely_packaged, get_recent_crashes File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> from apport.report import Report File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module> import apport.fileutils File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module> from apport.packaging_impl import impl as packaging File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in <module> import apt File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module> import apt_pkg ModuleNotFoundError: No module named 'apt_pkg' Original exception was: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/kajsa/.local/lib/python3.7/site-packages/qutip/__init__.py", line 171, in <module> from qutip.qobj import * File "/home/kajsa/.local/lib/python3.7/site-packages/qutip/qobj.py", line 60, in <module> from qutip.fastsparse import fast_csr_matrix, fast_identity File "/home/kajsa/.local/lib/python3.7/site-packages/qutip/fastsparse.py", line 37, in <module> from scipy.sparse.sputils import (upcast, upcast_char, to_native, isdense, isshape, ImportError: cannot import name 'IndexMixin' from 'scipy.sparse.sputils' (/home/kajsa/.local/lib/python3.7/site-packages/scipy/sparse/sputils.py) >>>
有什麼想法可能導致這種情況嗎?
感謝@Bart,我設法解決了所有錯誤程式碼。我就是這樣做的。
根據這篇文章,安裝錯誤
error: invalid command 'bdist_wheel'
,都通過安裝解決了。簡而言之,我只是跑了Failed building wheel for py-postgresql``Failed to build qubit py-postgresql``wheel
python3.7 -m pip install wheel python3.7 -m pip install --upgrade --force-reinstall qutip
該問題
ImportError: cannot import name 'IndexMixin' from 'scipy.sparse.sputils' (/home/kajsa/.local/lib/python3.7/site-packages/scipy/sparse/sputils.py)
是由於最新版本中 scipy 包的更改造成的。根據這個討論,這不僅僅是一個舉動,而是對包的改變,所以我不得不安裝一個舊版本的 scipy。這是通過執行這些命令來完成的。python3.7 -m pip uninstall scipy python3.7 -m pip install scipy<1.3.0
最後,
ModuleNotFoundError: No module named 'apt_pkg'
通過遵循這個答案和評論解決了。通過執行sudo apt-get install --reinstall python3-apt cd /usr/lib/python3/dist-packages sudo ln -s apt_pkg.cpython-{36m,37m}-x86_64-linux-gnu.so
**注意:**如果你發現你得到一個錯誤,比如
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: 'RECORD' Consider using the `--user` option or check the permissions.
我認為,您可以通過添加
--user
標誌來解決它,或者像我一樣,通過以 root 身份執行它sudo -H
,例如sudo -H python3.7 -m pip install 'scipy<1.3.0'
您可能需要安裝/重新安裝
wheel
pip 包,或查看此執行緒:https ://stackoverflow.com/questions/34819221/why-is-python-setup-py-saying-invalid-command-bdist-wheel-on-travis -ci