【问题标题】:conda build how to use subpackagesconda build 如何使用子包
【发布时间】:2020-03-29 10:48:39
【问题描述】:

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

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

python -m my_package.the_subpackage

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

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

提前感谢您的帮助!

【问题讨论】:

  • 一旦安装了东西,行为应该是相同的。任何差异都是由于 conda 配方的差异造成的。我希望您需要做的就是确保setup.pysetup() 的调用包含packages=[...] 中的两个包。

标签: python build conda conda-build


【解决方案1】:

如果我理解正确,你的第一个问题是如果你已经有 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 只安装第一个子包。

【讨论】:

    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2019-11-10
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多