python - 如何在多个环境中正确使用 pip freeze >> requirement.txt

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

我想了解如何在多个环境中使用 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/

相关文章:

python - 在不使用 itertools 的情况下在 Python 中生成字符串的所有排列

python - 通过将变量传递给具有 yield 的递归函数来查找最小值

python - 如何使用Python 3提取文章网站的文本内容?

python - 替换列表中字符串中的字符并为每个字符创建一个副本

python - Mac osx lion、virtualenv、pil 安装 - gcc 错误

python - 如何使用过滤器查询Django模型

python - 使用Python获取字符的unicode代码点

python-2.7 - python - 索引分割字符串

python-3.x - DF 中每个组的 pyspark corr(超过 5K 列)

python - 使用我的应用程序的透明背景制作全屏绘画程序