【发布时间】:2019-04-13 06:00:15
【问题描述】:
我被难住了。我正在开发一些enhancements to scikit-image,它们是failing the automated build tests,可能是由于舍入错误。因此,我需要在我的 Windows 系统上运行自动化测试,以便调试并找出问题所在。到目前为止,我已经尝试了两种方法,但都不起作用:
-
在我的 Anaconda Python 3.6 环境中,当我尝试运行自动化测试时,出现以下错误:
RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb...我在其他情况下找到了参考,但无法消除。
由于自动化测试确实在基于 Python 3.5 的系统上运行(但失败),我认为如果我尝试使用本地 Python 3.5 环境,事情可能会奏效。在这里,我遇到了一个问题,尽管已安装,但环境找不到 MS C++ 编译器
cl.exe。它安装在C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64\中,由我的 Python 3.6 环境找到并执行,但是尽管我将该目录添加到我的 PATH 中,但我的 Python 3.5 环境却找不到它。我应该补充一点,我的 Python 3.6 环境发现它没有添加到 PATH 的目录。我了解 Python 3.5 和 3.6 都使用 MSVC 14.0。
如果可能的话,我更愿意在我的 Python 3.6 环境中解决这个问题。非常感谢任何帮助。
更新
我已经制作了一个全新的 Python 3.6 conda 环境,如下所示:
conda create --name sk36 python=3.6
conda activate sk36
conda install scikit-image --only-deps
conda install cython
git clone https://github.com/scikit-image/scikit-image.git
cd scikit-image
pip install -e .
pytest skimage/feature
我得到的具体错误如下:
..\Anaconda3\lib\site-packages\py\_path\local.py:662: in pyimport
__import__(modname)
skimage\__init__.py:135: in <module>
from .data import data_dir
skimage\data\__init__.py:13: in <module>
from ..io import imread, use_plugin
skimage\io\__init__.py:7: in <module>
from .manage_plugins import *
skimage\io\manage_plugins.py:24: in <module>
from .collection import imread_collection_wrapper
skimage\io\collection.py:12: in <module>
from ..external.tifffile import TiffFile
skimage\external\tifffile\__init__.py:1: in <module>
from .tifffile import imsave, imread, imshow, TiffFile, TiffWriter, TiffSequence
skimage\external\tifffile\tifffile.py:292: in <module>
from . import _tifffile
E RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb
...这似乎与tifffile 有关。由于这个包最初并没有显式安装在我的新环境中,我尝试安装它的各种版本,包括一些降级的numpy 和scipy。还是和上面一样的错误。
做了更多research 之后,实际上安装了 1.15.4 版本时,似乎看到了 numpy 1.13.x。这是conda list 的完整输出:
# Name Version Build Channel
blas 1.0 mkl anaconda
ca-certificates 2018.03.07 0 anaconda
certifi 2018.10.15 py36_0 anaconda
cloudpickle 0.6.1 py36_0 anaconda
cycler 0.10.0 py36h009560c_0 anaconda
cython 0.29 py36ha925a31_0 anaconda
dask-core 0.20.0 py36_0 anaconda
decorator 4.3.0 py36_0 anaconda
freetype 2.9.1 ha9979f8_1 anaconda
icc_rt 2017.0.4 h97af966_0 anaconda
icu 58.2 ha66f8fd_1 anaconda
imageio 2.4.1 py36_0 anaconda
intel-openmp 2019.0 118 anaconda
jpeg 9b hb83a4c4_2 anaconda
kiwisolver 1.0.1 py36h6538335_0 anaconda
libpng 1.6.35 h2a8f88b_0 anaconda
libtiff 4.0.9 h36446d0_2 anaconda
matplotlib 3.0.1 py36hc8f65d3_0 anaconda
mkl 2019.0 118 anaconda
mkl_fft 1.0.6 py36hdbbee80_0 anaconda
mkl_random 1.0.1 py36h77b88f5_1 anaconda
networkx 2.2 py36_1 anaconda
numpy 1.15.4 py36ha559c80_0 anaconda
numpy-base 1.15.4 py36h8128ebf_0 anaconda
olefile 0.46 py36_0 anaconda
openssl 1.0.2p hfa6e2cd_0 anaconda
package_has_been_revoked 1.0 0 enable_revoked
pillow 5.3.0 py36hdc69c19_0 anaconda
pip 18.1 py36_0 anaconda
pyparsing 2.3.0 py36_0 anaconda
pyqt 5.9.2 py36h6538335_2 anaconda
python 3.6.7 h33f27b4_1 anaconda
python-dateutil 2.7.5 py36_0 anaconda
pytz 2018.7 py36_0 anaconda
pywavelets 1.0.1 py36h8c2d366_0 anaconda
qt 5.9.6 vc14h1e9a669_2 anaconda
scikit-image 0.15.dev0 <pip>
scipy 1.1.0 py36h4f6bf74_1 anaconda
setuptools 40.5.0 py36_0 anaconda
sip 4.19.8 py36h6538335_0 anaconda
six 1.11.0 py36_1 anaconda
sqlite 3.25.2 hfa6e2cd_0 anaconda
tifffile 0.15.1 py36h452e1ab_1001 conda-forge
tk 8.6.8 hfa6e2cd_0 anaconda
toolz 0.9.0 py36_0 anaconda
tornado 5.1.1 py36hfa6e2cd_0 anaconda
vc 14.1 h21ff451_3 anaconda
vs2015_runtime 15.5.2 3 anaconda
wheel 0.32.2 py36_0 anaconda
wincertstore 0.2 py36h7fe50ca_0 anaconda
zlib 1.2.11 h8395fce_2 anaconda
更新 2
我已经解决了 Python 3.6 的问题,并且我认为上面有足够的信息让精明的人能够找出问题所在。我将把解决方案放在下面的答案中。
一个干净构建的 Python 3.5 环境找不到编译器,所以这个问题仍然存在。
【问题讨论】:
-
我个人从未成功地在 Windows 上从源代码编译 numpy 或 scipy。我总是使用 anaconda 发行版的预编译安装程序。
-
@Aaron - 我没有尝试编译这些包中的任何一个。
-
它们都是 scipy.org 生态系统的一部分,所以它们非常相关。我没有亲自尝试编译
scikit-image,但我确信大部分代码库都是相似的...... -
此外,错误本身听起来实际上是
numpy需要针对较新的基础重新编译... -
谢谢。引用了哪个 API?
标签: python python-3.x scikit-learn