如何使用pip freeze>> requirements.txt适用于多种环境

时间:2016-11-09 19:39:55

标签: python python-2.7 python-3.x pip

我想了解如何在多个环境中使用pip,我有一个通用的烧瓶web项目,我的生产环境需要pip install

pip install flask psycop2 Flask-SQLAlchemy

我的开发和测试环境需要这些和一些额外的东西

pip install flask psycop2 Flask-SQLAlchemy factory-boy flake8 WebTest 

我知道我可以运行pip freeze >> requirements/dev.txt然后在同一个文件夹上创建名为prod.txt的文件,并复制其中的所有常见要求,并将-r prod.txt添加到我的dev.txt中安装产品要求。

我的问题是,如何在安装时将冻结包压缩到特定的requirements.txt文件,让我们说接下来需要flake8-debugger这显然需要转到dev.txt,以便如何在没有常量的情况下实现冻结到单个文件和包复制粘贴?

我应该在没有版本的情况下添加flake8-debuggerdev.txt并运行pip install -r requirements/dev.txt,还是有更优雅的工作流程?

1 个答案:

答案 0 :(得分:2)

事实证明,这绝不会在requirements.txt系统上修复,但答案就在这里。

https://github.com/pypa/pipfile

使用新的Pipfile,我们可以很快管理要求ruby Gemfile或npm package.json

Pipfile

警告:此项目正在积极开发中。

Pipfile是一种新的(并且更好!)方式来声明Python环境的依赖关系(例如,部署Web应用程序)。它将完全替代普遍存在的requirements.txt文件,目前可以使用$ pip install -r进行安装。

这是一个概念项目,一旦API(包括Pipfile本身的形式)构建完成并最终确定,它最终将被构建到pip中。

请记住,这里的重要部分是Pipfile.lock。它允许确定性构建。今天的requirements.txt可以做到这一点,并且在没有提供版本说明符时应该,但通常不会。这项工作将提供更愉快的用户体验。

概念

Pipfile将以多种方式优于requirements.txt文件:

用于声明所有类型的Python依赖项的表达式Python语法。 子依赖组(例如测试组)的分组。 绝对鼓励使用单个文件。 Pipfile.lock 示例Pipfile

注意:将有一个默认源,也可以使用上下文管理器。

source('https://pypi.org/', verify_ssl=True)

package('requests')
package('Django', '==1.6')
package('pinax', git='git://github.com/pinax/pinax.git', ref='1.4', editable=True)
dev_package('nose')