我有一个用于构建conda环境的environment.yml文件,其中一个包(另一个包的python包装)取决于另一个包提供的.h / .so文件。假设:
channels:
- defaults
- conda-forge
dependencies:
- blah=1.2.1
- pip:
- git+https://github.com/pyBlah.git
blah
软件包本身可以正确安装,并且header / .so文件确实安装在适当的位置(分别在conda环境的include
和lib
文件夹内),但是pip install
行失败,因为它找不到标题。
我可以删除上面environment.yml中的pip
行,然后在创建/激活环境后尝试安装它,就像这样:
CFLAGS=-I/path/to/env/include LDFLAGS=-L/path/to/env/lib pip install git+https://github.com/pyBlah.git
或遵循类似Conda set LD_LIBRARY_PATH for env only的内容
为了避免必须在pip install
中明确指出路径,但是必须执行其中任何一个步骤似乎都提供了太多的细节,并将原本应该安装的步骤分成了许多步骤。
我的想法是conda必须在内部做类似的事情来解析/构建/安装它在environment.yml中找到的相关软件包。
所以我的问题是双重的:
conda是否有理由不自动添加适当的include / lib路径,因为否则pip
(毕竟是特定于环境的)应该如何在环境处于正常状态时正确地工作呢?激活了吗?
是否仅使用environment.yml中的适当说明符就能完成依赖包安装的规范方法?