我已經閱讀了一些關於.egg文件,我注意到它們在我的lib目錄中,但是作爲開發人員使用它的優點/缺點是什麼?將Python庫/應用程序打包爲.egg文件有什麼優勢?
回答
從Python Enterprise Application Kit community:
「雞蛋是蟒蛇的罐子到Java ......」
Python的蛋是用Python的 項目捆綁 附加信息的方式,它允許在運行時檢查項目的 依賴關係,並且 滿足允許項目爲其他項目提供插件 。有幾種 體現雞蛋的二進制格式,但 最常見的格式是'.egg'zipfile 格式,因爲這是一種方便的 用於分發項目。所有的 格式都支持包括 包特定數據,項目範圍 元數據,C擴展和Python 代碼。
Python的雞蛋 的主要優點是:
他們能夠像工具「簡易安裝」 Python包管理器
.egg文件是一個Python「零安裝」的格式 包;沒有構建或安裝步驟是需要 ,只是把它們放在PYTHONPATH 或sys.path中,並用它們(可能需要 如果C擴展 或數據文件用於安裝運行時)
它們可以包括包的元數據,如它們依賴於
其他蛋他們允許「命名包」(即只包含其他 套餐包)拆分成單獨的 分佈(如Zope的。,扭曲。, 高峯。*包可以分配爲 單獨的蛋,不像普通包 必須始終放在 相同的父目錄下。這使得 現在什麼都是巨大的單片包 被分配作爲單獨 組件)。
它們允許應用程序或庫指定需要的 版本的庫,這樣就可以 例如要求(「Twisted-Internet> = 2.0」) 在執行導入之前 twisted.internet。
他們是一支偉大的格式分發擴展或插件 可擴展的應用程序和框架 (如Trac系統,它使用雞蛋 插件爲0。9B1),因爲雞蛋 運行時提供了簡單的API來定位 雞蛋和找到自己的廣播條目 點(類似於Eclipse的 「擴展點」的概念)。
還有其他的好處,可能來自標準化的 格式,類似於Java的「jar」格式的好處 。
- 亞當
.egg文件基本上都是部署的Python應用程序的好方法。您可以將其視爲Java的.jar文件。
更多信息here。
雞蛋是發佈python應用程序的好方法。把它想象成一個獨立於平臺的.deb文件,它將安裝所有的依賴關係和內容。優點是對於最終用戶來說很容易使用。缺點是將應用程序打包成.egg文件可能會很麻煩。
除了.eggs之外,您還應該提供另一種安裝方式。有些人不喜歡使用雞蛋,因爲他們不喜歡軟件程序安裝任何軟件的想法。這些通常傾向於是系統管理員類型。
不管你做什麼,不停止分發您的應用程序,也作爲一個壓縮包,因爲這是與包sysetem操作系統的最簡單的裝袋的格式。
對於簡單的Python程序,你可能並不需要使用雞蛋。分發原始的.py文件應該足夠了;這就像分發GNU/Linux的源文件一樣。您還可以使用各種操作系統「打包器」(如py2exe或py2app)爲不同的操作系統創建.exe,.dmg或其他文件。
更復雜的程序,例如由於需要各種模塊和依賴關係,Django幾乎需要雞蛋。本身
一個雞蛋不超過一個適當的源代碼版本更好。好的部分是依賴處理。像debian或者rpm包一樣,你可以說你依賴於其他的蛋,它們會自動安裝(通過pypi.python.org)。
第二評論:雞蛋格式本身是二進制格式打包。只包含python代碼的普通python包最好作爲「源代碼版本」發佈,所以「python setup.py sdist」會導致.tar.gz。上傳到pypi時,這些通常也被稱爲「雞蛋」。
,你需要二進制雞蛋:當你捆綁一些C代碼擴展。那麼你需要幾個二進制的雞蛋(一個32位的unix,一個窗口等)。
但是如果依賴Python包沒有將二進制文件上傳到PyPi呢? – Mitar 2012-06-15 15:23:30
- 1. c#應用程序作爲服務運行有什麼優勢?
- 2. 使用Python Virtualbox API有什麼優勢?
- 3. 將整個Python應用程序打包爲PEX文件
- 4. 在程序中使用線程有什麼優勢?
- 5. 開發SharePoint組件與獨立應用程序有什麼優勢和缺點?
- 6. 打包python應用程序
- 7. 什麼是XSLT的優勢和應用程序?
- 8. Hibernate NamingStrategy有什麼優勢
- 9. reftype {}有什麼優勢?
- 10. 將Sinatra/Rack應用程序製作成單個本地可執行文件有什麼優勢?
- 11. 爲什麼我們使用disk_logs和使用disk_log數據庫有什麼優勢?
- 12. 使用Java小程序有什麼優勢?
- 13. 使用Java將內部類設爲靜態有什麼優勢?
- 14. 如何將python程序轉換成.egg文件?
- 15. 使用Parse.com JS SDK比Parse.com REST API和AngularJS應用程序有什麼優勢?
- 16. 使用C#CLR與C#應用程序相比有什麼優勢嗎?
- 17. 在應用程序服務器上使用C2DM有什麼優勢?
- 18. 爲什麼我的非python文件沒有打包?
- 19. 爲什麼IL代碼打包到C#應用程序中的exe文件中?
- 20. 使用bower而不是縮小javascript文件有什麼優勢?
- 21. 使用Builder比常規xml文件有什麼優勢?
- 22. 使用通配符配置文件有什麼優勢嗎?
- 23. 使用scrapyd有什麼優勢?
- 24. Hudson vs使用shellcript有什麼優勢?
- 25. 使用HttpApplication比HttpApplication有什麼優勢?
- 26. 使用迭代器有什麼優勢?
- 27. 使用NSOutputstream有什麼優勢?
- 28. 使用Redux比React有什麼優勢?
- 29. 使用SVN比CVS有什麼優勢?
- 30. 使用SproutCore框架有什麼優勢?
但是如果依賴Python包沒有將二進制文件上傳到PyPi呢? – Mitar 2012-06-15 15:24:04