跳转到主要内容

统一Conda和Pip需求管理。

项目描述

:rocket: conda-join - 统一Conda和Pip需求管理 :rocket

PyPI Build Status CodeCov

conda-join通过允许使用单个requirements.yaml文件来处理Conda和Pip依赖项,简化了Python项目依赖项管理。这种简化的方法允许创建统一的Conda environment.yaml文件,同时还可以无缝地集成到setup.pypyproject.toml中。此外,它还可以用作CLI,将多个requirements.yaml文件合并到一个environment.yaml文件中。使用conda-join简化您的设置,并将所有依赖项维护在一个地方。

:books: 目录

:package: 安装

要安装conda-join,请运行以下命令

pip install -U conda-join

或者只需将脚本复制到您的计算机上

wget https://raw.githubusercontent.com/basnijholt/conda-join/main/conda_join.py

:page_facing_up: requirements.yaml 结构

conda-join使用特定格式的requirements.yaml文件进行处理

  • 名称(可选):用于文档,输出中不使用。
  • 渠道:包的来源列表,例如conda-forge
  • 依赖关系:Conda和Pip包的混合。

示例

一个requirements.yaml文件的示例

name: example_environment
channels:
  - conda-forge
dependencies:
  - numpy  # same name on conda and pip
  - conda: python-graphviz  # When names differ between Conda and Pip
    pip: graphviz
  - pip: slurm-usage  # pip-only
  - conda: mumps  # conda-only

⚠️ conda-join可以在pyproject.tomlsetup.py中处理此文件,并创建一个environment.yaml文件。

重点

  • 标准名称(例如,- numpy)假定在Conda和Pip中相同。
  • 使用conda: <package>pip: <package>来指定跨平台的不同名称。
  • 使用pip:来指定仅通过Pip可用的包。
  • 使用conda:来指定仅通过Conda可用的包。

使用CLI conda-join将结合这些依赖项到一个environment.yaml文件中,结构如下:

name: some_name
channels:
  - conda-forge
dependencies:
  - numpy
  - python-graphviz
  - mumps
  pip:
    - slurm-usage

平台选择器

本工具支持一系列平台选择器,允许根据用户的操作系统和架构对依赖项进行特定处理。此功能特别适用于管理不同环境中的条件依赖项。

支持的选择器

以下选择器受支持:

  • linux:适用于所有基于Linux的系统。
  • linux64:专门适用于64位Linux系统。
  • aarch64:适用于基于ARM64架构的Linux系统。
  • ppc64le:适用于PowerPC 64位Little Endian架构的Linux系统。
  • osx:适用于所有macOS系统。
  • osx64:专门适用于64位macOS系统。
  • arm64:适用于基于ARM64架构的macOS系统(苹果硅)。
  • macos:是osx的替代方案,用于macOS系统。
  • unix:适用于所有类UNIX系统(包括Linux和macOS)。
  • win:适用于所有Windows系统。
  • win64:专门适用于64位Windows系统。

使用方法

选择器用于requirements.yaml文件,根据平台条件性地包含依赖项

dependencies:
  - some-package  # [unix]
  - another-package  # [win]
  - special-package  # [osx64]
  - pip: cirq  # [macos]
    conda: cirq  # [linux]

在此示例中

  • some-package仅在类UNIX环境中(Linux和macOS)包含。
  • another-package专门针对Windows。
  • special-package仅在64位macOS系统中包含。
  • cirq在macOS上由pip管理,在Linux上由conda管理。这展示了您可以根据平台指定不同的包管理器来管理同一软件包。

实现

工具解析这些选择器,并根据其运行的平台过滤依赖项。这对于创建可跨不同平台移植的环境文件特别有用,确保每个环境都安装了适当的依赖项。

:memo: 使用方法

使用pyproject.tomlsetup.py

要在您的项目中使用conda-join,您可以在pyproject.toml中进行配置。此设置与位于同一目录中的requirements.yaml文件协同工作。行为取决于您的项目设置

  • 仅使用pyproject.toml时:将自动根据requirements.yaml的内容填充pyproject.toml中的dependencies字段。
  • 使用setup.py时:将自动填充setup.py中的install_requires字段,反映在requirements.yaml中定义的依赖项。

以下是一个pyproject.toml配置示例

[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "wheel", "conda-join"]

[project]
dynamic = ["dependencies"]

在此配置中,conda-join作为构建需求包含在内,允许它处理requirements.yaml文件中的Python依赖项,并相应地更新项目的依赖项。

:memo: 作为CLI

使用conda-join扫描目录以查找requirements.yaml文件,并将它们合并为environment.yaml文件。有关更多信息,请参阅示例或检查conda-join -h的输出

usage: conda-join [-h] [-d DIRECTORY] [-o OUTPUT] [-n NAME] [--depth DEPTH]
                  [--stdout] [-v]

Unified Conda and Pip requirements management.

options:
  -h, --help            show this help message and exit
  -d DIRECTORY, --directory DIRECTORY
                        Base directory to scan for requirements.yaml files, by
                        default `.`
  -o OUTPUT, --output OUTPUT
                        Output file for the conda environment, by default
                        `environment.yaml`
  -n NAME, --name NAME  Name of the conda environment, by default `myenv`
  --depth DEPTH         Depth to scan for requirements.yaml files, by default
                        1
  --stdout              Output to stdout instead of a file
  -v, --verbose         Print verbose output

限制

  • 无冲突解决:无法解决不同requirements.yaml文件之间的版本冲突。
  • 以conda为中心:最适合conda环境。

今天就尝试使用conda-join来简化跨多个项目管理Conda环境依赖项的方法!🎉👏

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

conda-join-0.13.0.tar.gz (17.0 kB 查看哈希值)

上传时间:

构建分发

conda_join-0.13.0-py3-none-any.whl (12.8 kB 查看哈希值)

上传于 Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面