我想了解如何在多个环境中使用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-debugger
到dev.txt
并运行pip install -r requirements/dev.txt
,还是有更优雅的工作流程?
答案 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')