我正在尝试使用" conda build fibtestpackage"来构建一个包。命令。
" fibtestpackage"是使用Cython构建的,因此在.sh文件中我有命令:
python setup.py build_ext --inplace
即使Build成功结束,输出也符合预期:
获取包裹...... 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)
这会导致这个问题吗?也许构建环境是在错误的库中安装库?
提前感谢您的帮助!
答案 0 :(得分:2)
Conda构建创建一个构建conda环境,称为_build
(通常在〜/ anaconda / envs / _build中),这是你应该安装所有内容的地方。对于Python,通常做python setup.py install
是好的如果在meta.yaml中包含Python作为构建依赖项,那就足够了,因为python
将是_build
环境中安装的那个,它将安装在那里。
在构建结束时,conda build会在构建环境中包装所有新文件,并从中创建一个conda包。如果存在测试阶段,则会删除_build
环境并创建一个名为_test
的测试环境,并在那里安装并运行该程序包。
要调试此问题,请尝试在〜/ anaconda / envs / _test中运行Python。
在您的情况下,问题可能是python setup.py build_ext --inplace
实际上没有安装文件,它只是构建它们。检查构建结束时查看它所说的文件数量。如果有0,则问题就在于此。