Conda 到诗歌环境

Conda to poetry environment

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

我尝试过的是将conda环境的environment.yaml翻译成poetry可以读取的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
    
  2. environment.yaml 手动创建 pyproject.toml 文件。我添加了从 conda env export 获得的 numpy 版本。这是结果:

    # 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"
    
  3. poetry init创建环境,会自动读取toml文件

该过程似乎可行,但它非常手动且容易出错。 有没有更好的方法?

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

提示

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

如果环境直接使用任何 PyPI 包,这将不会从 conda env export --from-history 中看到。但是,这些将在使用 conda list(带有通道 pypi 的条目)或普通 conda env export 时出现,如果有任何 dependencies.pip: 部分.