【问题标题】:Building SimpleITK with CMake for Python 3使用 CMake 为 Python 3 构建 SimpleITK
【发布时间】:2014-06-21 06:18:37
【问题描述】:

我想从源代码构建 SimpleITK 并为 Python 3.4(在 Ubuntu 14.04 上)安装它。

我关注了SimpleITK's build instructions,即

git clone http://itk.org/SimpleITK.git
mkdir SimpleITK-build
cd SimpleITK-build
cmake ../SimpleITK/SuperBuild

而且效果很好。我能够使用sudo python setup.py install 为 Python 2.7 安装 SimpleITK。然后我尝试使用 sudo python3.4 setup.py install 为 Python 3.4 安装它,虽然它似乎安装正确,但当我尝试在 Python 3 中导入 SimpleITK 时,我得到了:

...    
    File "/usr/lib/python3.4/imp.py", line 243, in load_module
        return load_dynamic(name, filename, file)
ImportError: dynamic module does not define init function (PyInit__SimpleITK)

在上面的构建说明中,它说:

验证和/或更正高级 cmake 变量以适应语言特定的可执行文件、库和包含目录。例如,如果您有多个 Python 安装,请确保所有相关的 Python 变量都引用相同的版本。

我没有这样做,我怀疑这就是它只适用于 Python 2.7 的原因。如何更正“高级 cmake 变量”?

【问题讨论】:

    标签: python-3.x cmake itk


    【解决方案1】:

    这是我在 Linux 上使用的所有步骤(构建 Yiuin 的答案和 official docs)。

    获取 SimpleITK 源代码

    cd ~
    git clone --recursive http://itk.org/SimpleITK.git
    

    设置最新的稳定版本

    cd ~/SimpleITK
    git tag
    

    寻找最新的稳定版本(对我来说是“v0.8.0”)并通过以下方式检查它

    git checkout v0.8.0
    

    不要担心有关“分离的 HEAD”的警告。

    构建 SimpleITK

    cd ~
    mkdir SimpleITK-build
    cd SimpleITK-build
    

    这里我使用了 CMake GUI(在 Ubuntu 上,使用 sudo apt-get install cmake-qt-gui 获取),

    cmake-gui ../SimpleITK/SuperBuild/
    

    这将打开一个 GUI,您可以从中编辑 cmake 变量。单击按钮Configure 并在弹出的对话框中点击Finish,然后启用Advanced。更改所有相关的 Python 变量:

    (我不确定为什么某些路径的末尾有“m”,但您可以阅读更多关于它的信息here

    如果您想关闭 Java 或任何其他语言,请向下滚动并禁用 WRAP_JAVA。再次点击Configure(不确定是否有必要),然后点击Generate。关闭 CMake GUI,返回终端并输入

    make
    

    这至少需要一个小时。

    现在将此行添加到您的 .bashrc 文件中

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/SimpleITK-build/lib
    

    在 Python 上安装

    我使用checkinstall干净地管理安装,

    cd ~
    sudo checkinstall --pkgname python3-simpleitk  python3.4 \
    ~/SimpleITK-build/SimpleITK-build/Wrapping/PythonPackage/setup.py install
    

    【讨论】:

      【解决方案2】:

      我会首先检查最新的标记版本,如果您不在标记的分支上,那么在任何给定时间都很难知道 repo 中发生了什么。使用 git 标签查​​看哪些可用,然后执行:

      git checkout v0.8.0
      

      要优化正确的cersion,您可能应该使用ccmake 而不是cmake。然后配置(c)两次,然后生成(g)。如果你不打算使用 java、tcl 和 R,你可以禁用它们。检查您的 python 库和包含是否匹配 python 3.4(PYTHON_INCLUDE_DIR、PYTHON_LIBRARY、PYTHON_EXECUTABLE,使用“t”查看高级选项)。

      【讨论】:

      • 这些是 cmake 相关的 python 变量,需要验证它们与您要安装的 python 版本一致。我建议查看最终版本而不是候选版本 (rc),最新版本的标签为“v0.8.0”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2015-05-27
      • 2020-05-27
      • 1970-01-01
      • 2016-10-26
      • 2020-02-08
      • 2018-05-31
      相关资源
      最近更新 更多