我想了解如何在多个环境中使用 pip
,我有一个通用的 flask 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
以使其也安装 prod 要求。
我的问题是,如何在安装时将卡住包 pip 到特定的 requirement.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 是一种新的(而且更好!)声明 Python 环境依赖项的方法(例如,部署 Web 应用程序)。它将完全替代普遍使用的 requirements.txt 文件,目前可以使用 $ pip install -r 安装。
这是一个概念项目,一旦 API(包括 Pipfile 本身的形式)已经构建并完成,最终将构建到 pip 本身。
请记住,这里的重要部分是 Pipfile.lock。它允许确定性构建。今天的 requirements.txt 可以做到这一 pip ,并且应该,但通常不会,当没有提供版本说明符时。这些努力将提供更愉快的用户体验。
概念
Pipfile 在许多方面优于 requirements.txt 文件:
用于声明所有类型的 Python 依赖项的富有表现力的 Python 语法。 子依赖组的分组(例如测试组)。 极力鼓励仅使用单个文件。 文件锁 示例 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')
关于python - 如何在多个环境中正确使用 pip freeze >> requirement.txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40514705/