所有这些不同的答案都表明出现了许多不同的问题,例如ImportError: numpy.core.multiarray导入失败。
==>所以在堆栈回溯之前查找更多的错误信息
例如,重现一个这样的问题的步骤(这些步骤在numpy 1.20发布之前都很好):
# set up a virtualenv
pyenv virtualenv 3.8.7 pip-issue-9542
pyenv local pip-issue-9542
# update pip, setuptools
pip install -U pip setuptools
# install 2 pips
pip install --no-cache-dir numpy==1.19.5 cvxpy==1.1.3
# try to load cvxpy
python -c 'import cvxpy'
输出:
RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/__init__.py", line 18, in <module>
from cvxpy.atoms import *
File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/__init__.py", line 20, in <module>
from cvxpy.atoms.geo_mean import geo_mean
File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/geo_mean.py", line 20, in <module>
from cvxpy.utilities.power_tools import (fracify, decompose, approx_error, lower_bound,
File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/utilities/power_tools.py", line 18, in <module>
from cvxpy.atoms.affine.reshape import reshape
File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/affine/reshape.py", line 18, in <module>
from cvxpy.atoms.affine.hstack import hstack
File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/affine/hstack.py", line 18, in <module>
from cvxpy.atoms.affine.affine_atom import AffAtom
File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/affine/affine_atom.py", line 22, in <module>
from cvxpy.cvxcore.python import canonInterface
File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/cvxcore/python/__init__.py", line 3, in <module>
import _cvxcore
ImportError: numpy.core.multiarray failed to import
重要的线索是RuntimeError:模块根据API版本0xe编译,但numpy的这个版本是0xd。
搜索它可以让你找到pip issue 9542和cvxpy issue 1229,它们解释了哪里出了问题。
本例中的变通方法是(a)更新为cvxpy>=1.1.10,或(b)更新为numpy>=1.20,或(c)两者都更新。您必须处理库更改,因为如果不深入pip的“无构建隔离”世界,原始环境是不可复制的。