【问题标题】:Download dependencies declared in pyproject.toml using Pip使用 Pip 下载在 pyproject.toml 中声明的依赖项
【发布时间】:2020-10-06 01:47:55
【问题描述】:

我有一个不包含 requirements.txt 的 Python 项目。 但它有一个pyproject.toml 文件。

如何使用 Pip 包管理器(而不是构建工具 Poetry)下载此 Python 项目所需并在 pyproject.toml 中声明的包(依赖项)。

所以不是pip download -r requirements.txt,而是pip download -r pyproject.toml

【问题讨论】:

    标签: python pip python-poetry pyproject.toml


    【解决方案1】:

    pip 原生支持installing pyproject.toml dependencies

    从 10.0 版开始,pip 支持项目在安装时使用 pyproject.toml 文件以 PEP 518 中描述的形式声明所需的依赖项。在构建项目时,pip 将在本地安装所需的依赖项,并生成它们可用于构建过程。此外,从 19.0 版开始,pip 支持项目指定他们在 pyproject.toml 中使用的构建后端,其格式在 PEP 517 中描述。

    从项目的根目录,使用 pip 的 local project 安装:

    python -m pip install .
    

    【讨论】:

    • 该命令不只是下载依赖项,它安装它们,以及实际的项目本身。
    【解决方案2】:

    您可以将依赖项导出到requirements.txt,然后使用pip download

    poetry export -f requirements.txt > requirements.txt
    pip download -r  requirements.txt
    

    【讨论】:

      【解决方案3】:

      以下是 .toml 文件的示例:

      [build-system]
      requires = [
          "flit_core >=3.2,<4",
      ]
      build-backend = "flit_core.buildapi"
      
      [project]
      name = "aedttest"
      authors = [
          {name = "Maksim Beliaev", email = "beliaev.m.s@gmail.com"},
          {name = "Bo Yang", email = "boy@kth.se"},
      ]
      readme = "README.md"
      requires-python = ">=3.7"
      classifiers = ["License :: OSI Approved :: MIT License"]
      dynamic = ["version", "description"]
      
      dependencies = [
          "pyaedt==0.4.7",
          "Django==3.2.8",
      ]
      
      [project.optional-dependencies]
      test = [
          "black==21.9b0",
          "pre-commit==2.15.0",
          "mypy==0.910",
          "pytest==6.2.5",
          "pytest-cov==3.0.0",
      ]
      
      deploy = [
          "flit==3.4.0",
      ]
      

      安装您运行的核心依赖项:

      pip install .
      

      如果您需要测试(开发)环境(我们使用test,因为它是在.toml 文件中定义的名称,您可以使用任何名称):

      pip install .[test]
      

      从 Wheel 安装:

      pip install C:\git\aedt-testing\dist\aedttest-0.0.1-py3-none-any.whl[test]
      

      【讨论】:

      • pip install . 不只是下载依赖项,它安装它们,以及实际的项目本身。
      猜你喜欢
      • 2019-12-10
      • 2020-09-21
      • 2023-02-11
      • 2017-06-05
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 2023-04-03
      • 2019-08-15
      相关资源
      最近更新 更多