我有幾個python應用程序包含應該打包並部署爲RPM的腳本/模塊。使用RPM分發python軟件包以及模塊依賴項
更棘手的一點是,每個應用程序應該與所有的python模塊依賴關係一起分發,並且應該優先使用這些應用程序,而不是系統範圍內安裝的任何應用程序。
其中一些RPM的目標主機的網絡訪問受限,因此RPM應包含運行該應用程序所需的所有內容,而不是在部署時下載任何內容。
我看過包裝和發行virtualenv,但重新部署virtualenv似乎沒有得到很好的支持。我看過zc.buildout,但發現文檔缺乏。我可以看到如何在開發過程中下載依賴項,但不知道如何將它們作爲更大應用程序的一部分進行分發。有可能不同的應用程序需要相同模塊的不同版本,所以這些應用程序不應該安裝在系統範圍內。
另一個痛點是應用程序中的任何python腳本需要修改,以便在開發期間和部署後使用不同的sys.path,但我無法看到明顯的解決方法。
有關如何最好地實現這一點的建議?從一個開發者的角度對工作流程的理想總結會是什麼樣子:
- 下載應用程序源
- 運行腳本,如果不存在(可能使用pip)
- 運行腳本來構建以獲取特定模塊依賴Python應用程序,並將其打包,所有下載的依賴到RPM
然後最終RPM應安裝並運行的,沒有網絡訪問的主機上,並且只有一個Python解釋器安裝。
你可能會分發一個獨立的python可執行文件 - 打包成RPM?你需要使用你的源代碼嗎?如果不看這裏http://stackoverflow.com/questions/5458048/how-to-make-a-python-script-standalone-executable-to-run-without-any-dependency – Anshul
我沒有使用它,但[conda's](http://www.continuum.io/blog/conda)旨在處理像你這樣的病例。在此鏈接查看「滾動您自己的軟件包」部分。 –
您應該使用pip捆綁包或pip「wheel houses」 – ionelmc