簡體   English   中英

如何將可運行的python程序打包在1個文件中

[英]How to package a runnable python program in 1 file

我打算將大型python程序打包到一個文件中;

我的要求是:

  • 只需下載1個文件
  • 可以校驗文件
  • 理想情況下,文件包含一些版本信息
  • 使用系統python

迄今為止,.egg和.zip是打包格式的最佳選擇。

雞蛋和拉鏈之間的實際區別是什么?

我打算做什么:

嵌入式系統下載我的代碼,例如package.zip 它開始我的代碼,例如python2 package.zip我的代碼可以驗證自己,例如md5sum sys.argv[0] 在我的服務器上報告並監視校驗和。

Zipfile有點神奇,因為內置的導入功能會自動將其導入。 我從來沒有嘗試過直接導入雞蛋,所以我不知道這是否行得通。

使用雞蛋可以帶來的最大好處是,您可以為軟件包指定依賴關系。 對於您來說,這可能並不重要。 使用egg可以設置需求,將其發布到pypi(如果需要),可以使用戶的生活變得更輕松。

打包后,pip(http://pypi.python.org/pypi/pip)使處理您的程序包更加容易。 以下是直接從pip頁面翻錄的示例-

$ pip install simplejson

$ pip install --upgrade simplejson

$ pip uninstall simplejson

您只需做一點工作就能獲得很大的收獲。 如果您不想將自己的東西推送到pypi,則可以將其發布在您自己的秘密Pypi(讀取網絡服務器)上,並指定該pip使用其他URL來查找軟件包。

$ pip install -i http://mycoolserver.com/pypi

我不是PIP專家,但是通過輕松安裝(pip的前身),您可以使用Apache輕松創建自己的PYPI。 只需發布pypi目錄,並允許它顯示索引(我認為這是正確的術語),以便您可以瀏覽pypi的文件系統。 通過此設置,創建一個以您的包裹命名的目錄,並將雞蛋放入其中。 它“有效”(對我來說是好:-)

雞蛋一個zip文件。

無論您使用哪種方法打包文件,您都可以在文件上使用md5sum(或其他任何哈希函數)-它們不關心文件的擴展名,只是二進制內容相同。

編輯:在您澄清需求之前,我寫了這個。 這似乎不適合,因為它不使用系統python可執行文件。

您的問題標題向我建議您要將其打包給常規 (即非pythonista) Windows最終用戶,以便他們只需雙擊即可運行它。 Py2exe正是用於此目的。

我采用這個假設是因為大多數Linux用戶希望它是一個帶有setup.py文件的歸檔文件,而不是一個可執行文件。 至於Mac OS X,我真的不知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM