【问题标题】:Can pip install from setup.cfg, as if installing from a requirements file?可以从 setup.cfg 安装 pip,就像从需求文件安装一样?
【发布时间】:2018-02-22 15:26:53
【问题描述】:

根据setuptools documentationsetuptools 版本 30.3.0(2016 年 12 月 8 日)“允许使用配置文件(通常是 setup.cfg)来定义包的元数据和其他选项通常提供给setup() 函数”。类似于运行pip install -r requirements.txt 从需求文件安装Python 包,有没有办法让pip 安装setup.cfg 配置文件的install_requires 选项中列出的包?

【问题讨论】:

    标签: python pip setuptools


    【解决方案1】:

    如果您的setup.cfg 属于格式良好的包,您可以这样做:

    pip install -e .[tests,dev]
    

    (在适当位置安装此软件包,并带有给定的附加功能)

    之后,您可以按名称 pip uninstall 该包,将部门保留在适当的位置。

    【讨论】:

      【解决方案2】:

      如果您在 setup.cfg 中定义了所有依赖项和其他元数据,只需在同一目录中创建一个最小的 setup.py 文件,如下所示:

      from setuptools import setup
      setup()
      

      从现在开始,您可以运行pip install,它将安装setup.cfg 中定义的所有依赖项,就好像它们在setup.py 中声明一样。

      【讨论】:

      • 像魅力一样工作,如文档中的here
      • 供参考 pip install . 与 setup.py 位于同一目录
      【解决方案3】:

      这是我的解决方法。我使用以下命令从setup.cfg 文件中解析install_requires 元素并使用pip 安装包。

      python3 -c "import configparser; c = configparser.ConfigParser(); c.read('setup.cfg'); print(c['options']['install_requires'])" | xargs pip install
      

      这里是上述命令行中管道之前的 Python 脚本更易读的版本。

      import configparser
      c = configparser.ConfigParser()
      c.read('setup.cfg')
      print(c['options']['install_requires'])
      

      【讨论】:

      • 这个脚本不支持必须通过dependency_links安装的包。
      【解决方案4】:

      不,pip 目前没有解析来自setup.cfg 的要求的工具。它只会安装依赖项以及setup.py 中提供的主包。

      【讨论】:

      • 或者,也许您只想安装需求,而不是实际的包? AFAIK,pip 本身无法读取setup.cfg,所有选项都由setuptools.config.read_configuration 读入setup.py
      • @rnorris 的评论是正确的。我不想安装 Python 包本身,我想安装它的依赖项。我想要pip install -r requirements.txt 之类的东西,但是pip install -r setup.cfg 之类的东西。
      • Pip 本身不支持。您可能需要推出自己的解决方案。请问您通过安装特定模块的依赖项而不是模块本身来尝试完成什么?
      • 在虚拟环境中安装依赖项以开发项目本身(不必安装它)。
      • 我认为对于 argentpepper 提到的用例,pip install --editable . 将是一个合适的解决方案。 --editable 标志的预期用例是使开发包在安装环境中可用,并且无需重新安装包即可显示任何源更改。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      相关资源
      最近更新 更多