Skip to main content
 首页 » 编程设计

python之使用 Conda Build 的 Cython Python 程序

2024年10月25日31sxdcgaq8080

我正在尝试使用“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 的模块

我对导入错误的第一个猜测是因为构建生成的 .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)

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

预先感谢您的帮助!

请您参考如下方法:

Conda 构建创建一个构建 conda 环境,称为 _build(通常在 ~/anaconda/envs/_build 中),这是您应该安装所有内容的地方。对于 Python,通常执行 python setup.py install 如果您将 Python 作为构建依赖包含在 meta.yaml 中就足够了,因为 python 将安装在 _build 环境中它将安装在那里。

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

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

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