如何在多个环境中正确使用pip冻结>> requirement.txt

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

pip install flask psycop2 Flask-SQLAlchemy

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

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

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

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

我应该只是将没有版本的flake8-debugger添加到dev.txt并运行pip install -r requirements / dev.txt或者是否有更优雅的工作流程?

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

https://github.com/pypa/pipfile

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

Pipfile

警告:该项目正在积极开发中.

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

这个概念项目最终将构建到pip本身,一旦API(包括Pipfile本身的形式)已经构建完成.

请记住,这里的重要部分是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')
点赞