以pip分割需求文件

Pao*_*olo 50 python syntax install pip package-management

要创建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
Run Code Online (Sandbox Code Playgroud)

不同需求文件的数量可以增长到足以让我们有办法立即包含它们,所以我宁愿说:

$ pip install -r /path/to/requirements/req1_req2.txt
Run Code Online (Sandbox Code Playgroud)

req1_req2.txt含喜欢的东西:

include /path/to/requirements/req1.txt
include /path/to/requirements/req2.txt
Run Code Online (Sandbox Code Playgroud)

或者:

$ pip install -r /path/to/requirements/*.txt
Run Code Online (Sandbox Code Playgroud)

这些都不起作用,无论多么简单,我都无法弄清楚如何做我想做的事.

有什么建议吗?

Fel*_*her 84

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

-r req-1.txt
-r req-2.txt
Run Code Online (Sandbox Code Playgroud)

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

  • 回答我自己的问题:不,它不起作用:`给出双重要求:foo == 1.4 ......` (5认同)
  • @ beluga.me如果您的点子有修复,它会起作用.如果你有点数1.5.X,这是默认的说Debian wheezy或jessie,而不是做*pip install -U pip*(或类似的)应该解决这个问题. (3认同)

Tec*_*ree 10

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

例如这里的测试要求:

需求测试.txt

pylint==2.4.4
pytest==5.3.2
Run Code Online (Sandbox Code Playgroud)

这里的开发要求:

需求-dev.txt

boto3>=1.12.11
Run Code Online (Sandbox Code Playgroud)

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

要求.txt

-r requirements-dev.txt
-r requirements-test.txt
Run Code Online (Sandbox Code Playgroud)

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

pip3 install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)