如何冻结本地无法满足的要求?

时间:2012-12-13 21:07:13

标签: python heroku pip

我正在编写一个Python应用程序以在Heroku上部署。根据{{​​3}},我需要在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)。它不会安装在' production'下列出的软件包。 group,但它仍然冻结了一致的版本化软件包列表。

示例:Heroku's guideGemfile

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这是不可能的。已向pip https://github.com/pypa/pip/issues/747

报告问题