【问题标题】:How to freeze requirements that can't be satisfied locally?如何冻结本地无法满足的需求?
【发布时间】:2012-12-14 07:20:53
【问题描述】:

我正在编写一个 Python 应用程序来部署在 Heroku 上。根据 Heroku's guide,我需要在 Pip requirements.txt 文件中列出软件包要求。该指南指示我在本地安装软件包,然后运行 ​​pip freeze > requirements.txt 以编写冻结的需求文件。

但是,我想在 Heroku 上部署的软件包之一无法在本地安装。它与我的操作系统不兼容。

那么我该如何写一个requirements.txt,包括这个适合Heroku 的包?

我能想到的唯一方法是手动编写它——但这会很乏味,因为有问题的包有很多自己的依赖项。此外,这违背了包管理器的观点。


将 Ruby 应用程序部署到 Heroku 时,Bundler 让这一切变得简单。在我的 Gemfile 中我写了

gem "pg", :group => :production
gem "sqlite3", :group => :development

命令bundle install 然后写入冻结版本列表Gemfile.lock(类似于requirements.txt)。它不会安装“生产”组下列出的软件包,但仍会冻结一致的版本化软件包列表。

示例:Gemfile 和 Gemfile.lock

【问题讨论】:

  • 我认为运行 Ubuntu 或 Debian VBox 映像并在然后虚拟环境生成你的 requirements.txt。

标签: python heroku pip


【解决方案1】:

您可以拥有多个文件,并称它们为不同的东西,但 Heroku 确实需要一个 requirements.txt。例如,对于 dev,您可以维护一个 dev_requirements.txt

你可以在本地运行:

$ pip freeze > dev_requirements.txt

等等,以及

$ pip install -r dev_requirements.txt

Heroku 将运行:

$ pip install -r requirements.txt

【讨论】:

  • 嗨,尼尔。我的问题是,如何为 Heroku 写 requirements.txt?
  • pip freeze > requirements.txt,然后编辑错误的相应部分?
【解决方案2】:

这是不可能的。问题报告给 pip https://github.com/pypa/pip/issues/747

【讨论】:

    猜你喜欢
    • 2018-03-03
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    相关资源
    最近更新 更多