康达到诗歌环境

edd*_*313 11 python conda python-poetry

我有一个 conda 环境,我想将其转换为诗歌环境。

我尝试过的是将environment.yamlconda环境的翻译成pyproject.toml诗歌可以读取的文件。这里有步骤:

  1. 生成yaml文件

    conda env export --from-history > environment.yaml

    --from-history标志仅包含我明确要求的包。这是安装 numpy 后文件的样子。

    # environment.yaml
    
    name: C:\Users\EDOCIC\Screepts\My_projects\Tests\conda2poetry\condaenv
    channels:
      - defaults
    dependencies:
      - numpy
    
    Run Code Online (Sandbox Code Playgroud)
  2. 手动创建pyproject.toml文件environment.yaml。我添加了从conda env export. 这是结果:

    # pyproject.toml
    
    [tool.poetry]
    name = "conda2poetry"
    version = "0.1.0"
    description = ""
    authors = [""]
    
    [tool.poetry.dependencies]
    python = "~3.7"
    numpy = "^1.21.5"
    
    [tool.poetry.dev-dependencies]
    
    [build-system]
    requires = ["poetry-core>=1.0.0"]
    build-backend = "poetry.core.masonry.api"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用 创建环境poetry init,它将自动读取 toml 文件。

该过程似乎有效,但它是相当手动的并且容易出错。 有没有更好的办法?

mer*_*erv 5

不,没有更好的办法了。Conda 是一个通用的包管理器,无法区分 Python 和非 Python 包,因此这必须通过手动管理来完成。

此外,包名称也可能不同。例如py-opencv(conda-forge)与opencv-python(PyPi)。

尖端

除了拉下--from-historyYAML 之外,它还可能有助于转储pip list --format=freeze. 这可以帮助解决在 Conda 和 PyPI 中使用不同名称的任何棘手的包。

如果环境直接使用任何 PyPI 包,则不会从conda env export --from-history. 但是,当使用(带有通道pypiconda list的条目) 或 plain时,这些将会出现,如果有的话,它会有一个部分。conda env exportdependencies.pip: