我正在尝试使用conda构建python软件包,但遇到了一些麻烦。
该软件包基本上是两个子软件包,目前,如果使用setuptools与python一起安装,它可以正常工作。我可以轻松地通过以下方式调用子包:
python -m my_package.the_subpackage
我真正的问题是,首先,我必须如何处理conda构建,才能将此转换为我的conda软件包。
其次,假设它与conda一起安装,该如何调用子软件包?是一样的还是my_package the_subpackage
或类似的东西?
在此先感谢您的帮助!
答案 0 :(得分:0)
如果我理解正确,那么您的第一个问题是,如果已经有了setup.py,如何为python创建conda软件包。答案很普遍,只需用谷歌搜索即可。 一种有用的参考:https://docs.conda.io/projects/conda-build/en/latest/user-guide/tutorials/build-pkgs.html
非常简短(不一定是通用的方式)是
conda install conda-build
mkdir conda-recipe && pushd conda-recipe
echo "python setup.py install --single-version-externally-managed" > build.sh
touch meta.yaml # populate meta.yaml with proper config. Something to start with: https://docs.conda.io/projects/conda-build/en/latest/_downloads/d42b166defebcb482accb83c6edec8c9/meta.yaml
# with <CWD> being your current working directory.
popd && conda-build <CWD>/conda-recipe -croot build --output-folder <CWD>/dist/conda
对于第二个问题,请咨询https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#implicit-metapackages,一种方法是通过outputs
配置定义不同的子包。
适合您的情况的配置:
package:
name: my_package
requirements:
host:
- python
run:
- my_package-the_subpackage1
- my_package-the_subpackage2
outputs:
- name: my_package.the_subpackage1
requirements:
- some-dep
script: some_build_script.sh
- name: my_package.the_subpackage2
requirements:
- some-other-dep
script: some_other_build_script.sh
这将创建3个包装(2个子软件包和一个依赖于子软件包的父元软件包)。 要安装它们,您可以执行以下操作:
conda install my_package
以获取全部信息
或
conda install my_package.the_subpackage1
仅安装第一个子软件包。