我維護一些Python包。我有一個非常相似的setup.py
文件爲他們每個人。但是,在做setup.py install
時,我的一個軟件包被安裝爲一個蛋,而其他軟件被安裝爲「蛋文件夾」,即擴展名爲「蛋」的文件夾。Python:爲什麼有些軟件包被安裝成雞蛋,有些軟件包被安裝成「蛋文件夾」?
他們之間的區別是什麼導致這種不同的行爲?
我維護一些Python包。我有一個非常相似的setup.py
文件爲他們每個人。但是,在做setup.py install
時,我的一個軟件包被安裝爲一個蛋,而其他軟件被安裝爲「蛋文件夾」,即擴展名爲「蛋」的文件夾。Python:爲什麼有些軟件包被安裝成雞蛋,有些軟件包被安裝成「蛋文件夾」?
他們之間的區別是什麼導致這種不同的行爲?
:
如果
zip-safe
存在,這意味着當爲.egg
壓縮文件安裝項目將正常工作,而相反的not-zip-safe
的存在意味着該項目不應該被安裝爲.egg
文件[即。作爲.egg
目錄]。 setuptools'setup()
的zip_safe
選項確定將寫入哪個文件。如果沒有提供選項,setuptools會根據代碼和內容分析嘗試自行評估軟件包是否可以工作。
是什麼使項目安全可靠?你爲什麼要選擇一個或另一個? (我問是否有人打包一個項目。) – 2012-03-09 17:31:58
來自setuptools文檔:http://peak.telecommunity.com/DevCenter/setuptools#setting-the-zip-safe-flag – saffsd 2013-04-08 00:15:30
一個雞蛋文件實際上是一個內部具有特定目錄結構的zip文件。根據zipimport文檔,只能從zip文件導入.py
,.pyc
和.pyo
文件。因此,如果程序包需要導入其他類型的模塊資源(如編譯後的c代碼; .so
文件,.pyd
文件),它將不能用作zip文件。
我不知道這是否是只有有理由認爲有些雞蛋不能用作zip壓縮文件,但我認爲這是主要原因。
這不是主要原因。這甚至不是一個正確的理由。 setuptools增加了特殊的加載器,使.so和.pyd文件即使在壓縮的蛋中也能正常工作。另一個答案是正確的。 – 2010-05-24 16:05:07
(我在Windows XP上。) – 2010-05-09 17:09:34