为virtualenv和pip维护不同的需求文件

3 投票
2 回答
1182 浏览
提问于 2025-04-18 10:42

我知道可以用 pip freeze 来帮助我列出虚拟环境中需要的包,但我在管理这些不同的包时遇到了一些困难。

我想把一些包分开,用于开发和生产环境,但因为我用的包太多了(很多包是重复的),所以同时维护开发和生产的需求文件实在太麻烦了。我该怎么更有效地把生产和开发的包分开呢?

2 个回答

5

你可以通过以下方式把一个需求文件包含到另一个需求文件里:

-r more_requirements.txt

比如,dev-requirements.txt 文件可以包含生产环境所需的包,还有额外的开发包:

-r requirements.txt
mock
tox

(等等)

7

其实并不难。

假设你有一个用于生产环境的需求文件:production.txt,还有一个用于开发环境的需求文件:development.txt。你可以再创建一个第三个文件,叫做shared.txt,里面列出所有共同需要的依赖。然后,在每个需求文件中,列出那些只在特定环境下需要的依赖。在development.txtproduction.txt的开头,使用-r shared.txt来链接到你的shared.txt。这样,每个文件在加载特定环境的依赖之前,都会先加载共同的依赖。

举个例子:

shared.txt

SharedExamplePackage1
SharedExamplePackage2
SharedExamplePackage3
SharedExamplePackage4
SharedExamplePackage5

development.txt

-r shared.txt
DevExamplePackage1
DevExamplePackage2

production.txt

-r shared.txt
ProductionExamplePackage1
ProductionExamplePackage2
ProductionExamplePackage3

撰写回答