1

我正在编写一个 Python 应用程序来部署在 Heroku 上。根据Heroku 的指南,我需要在 Piprequirements.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)。它不会安装“生产”组下列出的软件包,但仍会冻结一致的版本化软件包列表。

示例:GemfileGemfile.lock

4

2 回答 2

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
于 2012-12-13T21:39:30.643 回答
0

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

于 2012-12-13T23:20:53.560 回答