在Windows上编译scikitimage以运行测试

2024-06-01 14:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我被难住了。我正在开发一些enhancements to scikit-image,它们是failing the automated build tests,可能是由于舍入错误。因此,我需要让自动测试在我的Windows系统上运行,这样我就可以调试并找出问题所在。到目前为止,我已经尝试了两种方法,但都不起作用:

  1. 在我的Anaconda Python 3.6环境中,当我尝试运行自动测试时,出现以下错误:

    RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb

    ……我在其他情况下也提到过,但未能消除。

  2. 由于自动测试确实在基于python3.5的系统上运行(但失败),因此我认为如果尝试本地python3.5环境,事情可能会成功。在这里,我遇到的问题是,尽管安装了,环境仍然找不到MS C++编译器^ {CD2}}。它安装在C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64\中,由我的python3.6环境找到并执行,但是我的python3.5环境没有找到它,尽管我将该目录添加到我的路径中。我应该补充一点,我的python3.6环境发现它,而没有将目录添加到路径中。我知道Python3.5和3.6都使用MSVC14.0。

如果可能的话,我更愿意在我的python3.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有关。由于这个包最初没有显式地安装在我的新环境中,所以我尝试安装它的各种版本,包括一些降低了numpyscipy的版本。还是和上面一样的错误。你知道吗

在做了更多的research之后,当实际安装了1.15.4版时,似乎看到了numpy1.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

我已经为python3.6解决了这个问题,我认为上面有足够的信息让精明的人能够找出问题所在。我将在下面的答案中给出解决方案。你知道吗

一个干净构建的python3.5环境找不到编译器,所以这个问题仍然存在。你知道吗


Tags: infrompyimageimportnumpy环境错误
2条回答

你可以尝试的一种方法是升级你的numpy

pip install numpy upgrade

如这里所述:RuntimeError: module compiled against API version a but this version of numpy is 9

否则(如果出于某种原因您无法升级numpy),我建议您为scikit映像项目使用虚拟环境。我刚刚在windows10上试过,并且成功地执行了测试。我的步骤(从cmd,在项目文件夹中):

  • conda uninstall scikit-image删除任何以前生成/安装的版本
  • conda -n scikit-image python=3.6为这个项目创建一个虚拟环境(我使用了python3.6,但是您可以将它改为3.5)
  • activate scikit-image激活了新的虚拟环境
  • pip install -r requirements.txt安装的依赖项(没有这个步骤,我就无法安装测试的依赖项)
  • pip install -e .
  • pytest

事实证明pytest并没有安装在正确的环境中,它是从base调用的,后者确实安装了numpy1.13.3。在干净构建的python3.6环境中安装它至少解决了python3.6的问题。你知道吗

相关问题 更多 >