【问题标题】:Split requirements files in pip在 pip 中拆分需求文件
【发布时间】:2012-07-27 02:31:12
【问题描述】:

为了创建 Python 虚拟环境,我使用 virtualenv 和 pip。工作流程非常简单:

$ virtualenv project
$ cd project
$ . bin/activate
$ pip install -r /path/to/requirements/req1.txt
$ pip install -r /path/to/requirements/req2.txt

不同需求文件的数量可以增长到足以方便地同时包含它们,所以我宁愿说:

$ pip install -r /path/to/requirements/req1_req2.txt

req1_req2.txt 包含以下内容:

include /path/to/requirements/req1.txt
include /path/to/requirements/req2.txt

否则:

$ pip install -r /path/to/requirements/*.txt

这些都行不通,无论它多么简单,我都不知道如何做我想做的事。

有什么建议吗?

【问题讨论】:

  • 接受像 req1|req2 这样的输入的脚本呢... 拆分它然后使用正确的 pip 命令调用 os.system ?

标签: python syntax installation pip package-management


【解决方案1】:

-r 标志不仅限于命令行使用,它也可以在需求文件中使用。所以当 req-1-and-2.txt 包含这个时运行pip install -r req-1-and-2.txt

-r req-1.txt
-r req-2.txt

将安装 req-1.txt 和 req-2.txt 中指定的所有内容。

【讨论】:

  • 这个可以用来扩展和覆盖吗?例如。 req-1.txt 指定 foo==1.3 和 req-2.txt foo==1.4,会安装 1.4 吗?
  • 回答我自己的问题:不,它不起作用:Double requirement given: foo==1.4 ...
  • @beluga.me 如果您的 pip 有修复,它就可以工作。如果你有 Debian wheezy 或 jessie 默认的 pip 1.5.X,那么执行 pip install -U pip (或类似的)应该可以解决这个问题。
【解决方案2】:

请注意,您还可以根据您的分组拆分需求并将它们嵌入到一个文件中(或者再次可以根据您的环境准备多个需求文件),您可以执行。

比如这里的测试要求:

requirements-test.txt

pylint==2.4.4
pytest==5.3.2

这里的开发要求:

requirements-dev.txt

boto3>=1.12.11

包含您的其他需求的主需求文件:

requirements.txt

-r requirements-dev.txt
-r requirements-test.txt

现在,您可以安装嵌入其他需求的需求文件

pip3 install -r requirements.txt

【讨论】:

    猜你喜欢
    • 2011-04-09
    • 2012-04-24
    • 2014-02-14
    • 1970-01-01
    • 2012-02-11
    • 2013-01-15
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多