跳转到主要内容

从pyproject.toml生成environment.yml

项目描述

beni

Code style: black Tests and style checks PyPi Package

常见名称:玻利维亚安conda,Beni 安conda

Eunectes beniensis 是一种无毒的 boa 物种,仅存在于玻利维亚东北部。

长达四米的 Eunectes beniensis 最初被认为是由绿色和黄色安conda杂交的结果,但后来确定是一种独特的物种。由于信息缺乏和与 Eunectes notaeus 的外观相似,其分类地位尚不明确。它与 Eunectes notaeus 和 Eunectes deschauenseei 密切相关。

beniPEP 621/flit + conda

什么?

这是一个特定的工具,用于方便使用 flit 和 conda 的特定工作流程。假设是

  1. 您有一个包含至少一个 Python 包的仓库。
  2. 您使用 PEP 621 和/或 flitpyproject.toml 来描述您的依赖项。
  3. 您想使用 Conda 来管理本地开发,但您想在 PyPi 上发布您的包。
  4. 您想生成一个本地开发使用的 environment.yml 文件,该文件将尽可能通过 Conda 安装您的 Pypi 依赖项。

没有这个工具,您必须手动将所有 pyproject.toml 文件与 environment.yml 保持一致,这很容易出错且耗时。

未解决的问题

  1. 如果 conda forge 的名称与 pypi 名称不同怎么办?我们应该保留这些映射的列表。
  2. 我们如何使用 pyproject.toml 自动生成 conda forge 菜单?
  3. 将来,conda 能否以某种方式从 pyproject.toml 文件中读取以创建一个环境?

用法

  1. pip安装beni
  2. 运行 beni <pyproject.toml 路径> [<另一个 pyproject.toml 路径>] > binder/environment.yml 生成环境文件。它会将所有您的 conda forge 软件包需求添加到此环境,并以第一个 pyproject.toml 模块的名称命名。每个需求都检查是否有等效的 conda forge 软件包
  3. conda env create -f bind/environment.yml && conda activate <模块名称> && flit install --symlink 添加到您的 README 中作为开发设置。

示例

$ beni -h
usage: beni [-h] [--deps {all,production,develop,extras}] [--extras extra1,...]
            [--ignore [foo [bar ...]]]
            pyproject.toml [pyproject.toml ...]

Generate an environment.yml.

positional arguments:
  pyproject.toml        flit config files

optional arguments:
  -h, --help            show this help message and exit
  --deps {all,production,develop,extras}
                        Which dependencies to emit. 'production' means no extras,
                        'develop' means the extras 'test', 'doc', and 'dev', 'all' means all extras,
                        and 'extras' means the ones specified in `--extras` or all extras if `--extras` is not given.
  --extras extra1,...   Install the dependencies of these (comma separated) extras additionally to the ones
                        implied by --deps. --extras=all can be useful in combination with --deps=production.
  --ignore [foo [bar ...]]
                        Conda packages to ignore

$ cat pyproject.toml
[tool.flit.metadata]
requires = [
    "typing_extensions",
    "typing_inspect",
    "python-igraph=0.8.0"
]
requires-python = ">=3.7"
[tool.flit.metadata.requires-extra]
test = [
    "pytest",
    "pytest-cov",
    "pytest-mypy",
    "pytest-randomly",
    "pytest-xdist",
    "pytest-testmon",
    "pytest-pudb",
    "mypy"
]
doc = [
    "sphinx",
    "sphinx-autodoc-typehints",
    "sphinx_rtd_theme",
    'recommonmark',
    "nbsphinx",
    "ipykernel",
    "IPython",
    "sphinx-autobuild"
]
dev = [
    "jupyterlab>=1.0.0",
    "nbconvert",
    "pudb"
]

$ beni pyproject.toml
name: metadsl
channels:
  - conda-forge
dependencies:
  - python>=3.7
  - pip
  - pip:
    - flit
  - typing_extensions
  - typing_inspect
  - python-igraph=0.8.0
  - pytest
  - pytest-cov
  - pytest-mypy
  - pytest-randomly
  - pytest-xdist
  - pytest-testmon
  - pytest-pudb
  - mypy
  - jupyterlab>=1.0.0
  - nbconvert
  - pudb

开发

conda env create -f environment.yml
conda activate beni
pre-commit install
flit install --symlink

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定该选择哪个,请了解有关 安装包 的更多信息。

源分发

beni-0.4.4.tar.gz (8.1 kB 查看散列)

上传时间

构建分发

beni-0.4.4-py3-none-any.whl (7.4 kB 查看散列)

上传时间 Python 3

由以下支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF 赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面