【问题标题】:Cython Python Program using Conda Build使用 Conda Build 的 Cython Python 程序
【发布时间】:2014-10-25 14:43:37
【问题描述】:

我正在尝试使用“conda build fibtestpackage”命令构建一个包。

“fibtestpackage”是使用 Cython 构建的,因此在 .sh 文件中我有命令:

python setup.py build_ext --inplace

即使构建成功结束,输出也符合预期:


正在获取包... fibtestpackage-1.0.0 100% |###############################|时间:0:00:00 3.03 MB/s

正在提取包... [完成] |##################################### ############| 100%

链接包... [完成]|############################################## ####| 100%


我在 YAML 文件中的一项测试失败了。我唯一的测试是这样的:


test:
  # Python imports
  imports:
      - fibtestpackage
      #- numpy
      #- samplers

因此,这是一个导入错误,

ImportError: 没有名为 fibtestpackage 的模块

我对为什么会出现 importerror 的第一个猜测是因为构建生成的 .SO、.C 和 .PYX 文件(以及库的其他文件)没有放入 anaconda/lib/python2 中。 7/site-packages/ 其他模块所在的文件夹。我是否需要在 shell 文件中指定这一点,还是应该由“python setup.py build_ext --inplace”命令覆盖?

我的第二个猜测是发行版中有两个不同版本的 conda(更新后),

1) Python 2.7.8 |Anaconda 2.1.0(64 位)| (默认,2014 年 8 月 21 日,18:22:21)

2) Python 2.7.8 |Continuum Analytics, Inc.| (默认,2014 年 8 月 21 日,18:22:21)

这会导致问题吗?也许构建环境将库安装在错误的环境中?

提前感谢您的帮助!

【问题讨论】:

  • 经过一番研究,我在 .sh 文件中发现如果我将构建生成的 fibstestpackage.so 文件移动(使用 cp 命令)到 ~/anaconda/lib/python2.7/site -packages/ 文件夹,它似乎工作。这是最好的解决方案吗???

标签: python conda cython conda-build


【解决方案1】:

Conda build 创建了一个构建 conda 环境,称为 _build(通常在 ~/anaconda/envs/_build 中),您应该在其中安装所有内容。对于 Python,如果您包括Python 作为 meta.yaml 中的构建依赖项,因为 python 将是安装在 _build 环境中的那个,它将安装在那里。

在构建结束时,conda build 会打包构建环境中的所有新文件,并从中创建一个 conda 包。如果有测试阶段,它会删除_build 环境并创建一个名为_test 的测试环境,并在那里安装和运行包。

要调试此问题,请尝试在 ~/anaconda/envs/_test 中运行 Python。

在您的情况下,问题可能是python setup.py build_ext --inplace 实际上并没有安装文件,它只是构建它们。在构建结束时检查它说有多少文件。如果有 0,那么这就是问题所在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多