我正在尝试使用“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,那么这就是问题所在。
