python - 使用 Conda Build 的 Cython Python 程序

标签 python conda cython conda-build

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

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

python setup.py build_ext --inplace

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


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

正在解压包... [完成] |######################################## ############| 100%

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


我在 YAML 文件中进行的一个测试失败了。我唯一的测试如下:


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

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

导入错误:没有名为 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 build 创建一个名为 _build 的构建 conda 环境(通常在 ~/anaconda/envs/_build 中),您应该在其中安装所有内容。对于 Python,通常执行 python如果您将 Python 作为构建依赖项包含在 meta.yaml 中,则 setup.py install 就足够了,因为 python 将安装在 _build 环境中它将安装在那里。

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

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

就您而言,问题可能是 python setup.py build_ext --inplace 实际上并没有安装这些文件,它只是构建它们。在构建结束时检查它显示有多少个文件。如果有0,那么这就是问题。

关于python - 使用 Conda Build 的 Cython Python 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26563592/

相关文章:

python - 保存时使用主键创建字段描述

python - Groupby 所选 DataFrame 列的值的给定百分位数

Python/Django/Apache2/WSGI/UserDir/Conda : Django

python - INFO menuinst_win32 :__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}'

python - Cython 和 gcc : can't run compiled program

python - gnuplot.py - 绘制时间与距离图 - 多条线

python Flask SQLAlchemy 将数据插入 mysql

docker - 在 dockerfile 中运行 conda update 的问题

python - 将 Cython 融合类型转换为 C++ 指针

python - 在 buildozer 中编译 Cython 文件时出错