2012-12-13 103 views
1

我正在編寫一個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)。它不會安裝「生產」組下列出的軟件包,但它仍凍結了一致的版本化軟件包列表。

例子:GemfileGemfile.lock

+0

我認爲這不會太困難(並且從長遠來看,它會產生很多意義)來獲得Ubuntu或Debian VBox映像運行並安裝所需的所有軟件包虛擬env然後生成您的requirements.txt。 –

回答

1

你可以有一個以上的文件,並呼籲他們不同的東西,但是Heroku的不期望requirements.txt。例如,用於開發,你可以保持dev_requirements.txt

本地您可以運行:

$ pip freeze > dev_requirements.txt 

等,

$ pip install -r dev_requirements.txt 

和Heroku上運行:

$ pip install -r requirements.txt 
+0

嗨尼爾。我的問題是,如何爲Heroku編寫'requirements.txt'? –

+0

pip freeze> requirements.txt,然後編輯錯誤的適當部分? –

相關問題