conda应该如何处理头文件?

时间:2017-04-26 05:33:04

标签: python linux header-files conda

尝试安装依赖于C库头文件的python库。目前,如果我尝试:

conda install hdf5
pip install bitshuffle

然后,由于无法找到gcc

,我收到hdf5.h错误

注意,conda 已下载hdf5.h(至envs/myenv/include),并且作为解决方案,在这种情况下有一个替代渠道,conda可以从中安装bitshuffle。

是否建议练习conda install gcc而不是使用(或让pip使用)系统默认编译器? conda activate是否应将其include目录添加到常见编译器使用的环境变量中?将conda和pip用法结合起来是不好的做法吗?

1 个答案:

答案 0 :(得分:0)

我发现the *-compiler packages (e.g., c-compiler) from Conda Forge相对容易使用,并且它们的行为完全符合您的描述。也就是说,每当激活环境时,它们就会自动将环境的includelib文件夹添加为编译器的搜索位置。从技术上讲,它们的主要用途是用于构建Conda Forge软件包,但是使用它们作为本地构建的编译器时,我没有遇到任何问题。

如果您仍然想使用自己的系统级编译器,则可以手动创建自己的activation scripts来模仿*-compiler软件包的功能(例如,更改CLFAGS和{ {1}}。

我要说的建议做法是保持环境尽可能独立。这样做的好处是可以创建一个部署到多个平台(例如 osx-64 linux-64 )的环境定义(YAML),并可以使用相同的命令。另外,如果您构建与LDFLAGS_LD兼容的代码,则基本上可以轻松地将其代码本身打包为Conda软件包。

最后,应注意,所讨论的原始软件包是now on Conda ForgeThe meta.yaml显示了哪些软件包足以使环境构建该软件包。