为啥我不应该将 virtualenv 推送到 Heroku?

Posted

技术标签:

【中文标题】为啥我不应该将 virtualenv 推送到 Heroku?【英文标题】:Why shouldn't I push a virtualenv to Heroku?为什么我不应该将 virtualenv 推送到 Heroku? 【发布时间】:2015-07-09 11:10:22 【问题描述】:

在线教程告诉我将venv 放入我的.gitignore 文件中。为什么我不想推送我的虚拟环境,以便我或其他开发人员可以轻松地将项目拉到他们的本地并方便地拥有所有依赖项?

【问题讨论】:

【参考方案1】:

除了 Othman 所说的之外,virtualenvs 根本就是不可移植的。试图移动它会破坏它,并且创建一个新环境比修复它更容易。因此,即使在使用虚拟环境的部署平台上,将它们签入 git 也无法正常工作。

【讨论】:

【参考方案2】:

virtualenv 是一个创建隔离 Python 环境的工具。

Heroku 为您提供了一个环境,您可以使用 Heroku 为 Django 应用程序所需的 requirements.txt 安装包。

如果您想与其他开发人员共享这些依赖项,请使用另一个远程到 github。并推送你的requirements.txt

然后告诉您的开发人员使用此文件安装软件包。

例子

requirements.txt

Django==1.3
Fabric==1.2.0
Jinja2==2.5.5
PyYAML==3.09

一次性安装这些软件包:

pip install -r /path/to/requirements.txt

此外,当您在本地计算机上运行应用程序时,虚拟环境文件可能会发生变化,这会使将无用的东西推送到您的存储库。

注意:如果您想知道虚拟环境中安装了哪些软件包,请使用pip freeze

如果你想将包导出到requirements.txt 然后运行

pip freeze > requirements.txt

【讨论】:

以上是关于为啥我不应该将 virtualenv 推送到 Heroku?的主要内容,如果未能解决你的问题,请参考以下文章

为啥需要将 django 迁移推送到版本控制系统

将 TabBarController 推送到视图

为啥我无法将我的代码推送到 BitBucket?

为啥不能将新添加的文件推送到远程存储库?

为啥不将数据库查询中的移动结果推送到变量中?

在 SwiftUI 中,为啥 Spacer 会将文本推送到 TextEditor 框架之外?