0

我正在尝试使用 conda 构建我的 python 包,但遇到了一些麻烦。

该软件包基本上是两个子软件包,目前,如果使用 setuptools 与 python 一起安装,它可以正常工作。我可以很容易地调用子包:

python -m my_package.the_subpackage

我真正的问题首先是,我必须对 conda build 做些什么才能将其转换为我的 conda 包。

其次,假设我的子包是用 conda 安装的,我该如何调用它?是一样的,还是my_package the_subpackage类似的?

提前感谢您的帮助!

4

1 回答 1

0

如果我理解正确,你的第一个问题是如果你已经有 setup.py,如何为 python 创建 conda 包。答案很常见,google一下就知道了。一个有用的参考: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只安装第一个子包。

于 2019-12-10T22:23:08.020 回答