“凍結”您的代碼是指創建單個可執行文件,以分發給包含所有程序代碼以及Python解釋器的終端用戶。

像“Dropbox”、“星戰前夜”、“文明4”和“BitTorrent 客戶端”都是如此。

進行這種分發的好處是您的用戶不需要安裝好所要求版本的Python(或其他)就可以運行您的應用程序。 在Windows上,甚至許多Linux發行版和OS X,特定的Python版本并不總是安裝好的。

此外,終端用戶軟件應始終是可執行的格式。 以 .py 結尾的文件適用于軟件工程師和系統管理員。

凍結的一個缺點是它會增加大約2-12MB的發行大小。另外,如果修補了Python的安全漏洞, 您將負責分發更新版本的應用程序。

凍結的多種方式?

打包您的代碼 是指把您的庫或工具分發給其他開發者。

在Linux 一個凍結的待選物是 創建一個Linux分發包 (比如,對于 Debian 或 Ubuntu 是 .deb文件,而對于 Red Hat 與 SuSE 是 .rpm 文件)

Todo

完善 “凍結您的代碼” 部分(stub)。

比較凍結工具?

各解決方案的平臺/特性支持性

Solution

Windows

Linux

OS X

Python 3

License

One-file mode

Zipfile import

Eggs

pkg_resources support

bbFreeze

yes

yes

yes

no

MIT

no

yes

yes

yes

py2exe

yes

no

no

yes

MIT

yes

yes

no

no

pyInstaller

yes

yes

yes

yes

GPL

yes

no

yes

no

cx_Freeze

yes

yes

yes

yes

PSF

no

yes

yes

no

py2app

no

no

yes

yes

MIT

no

yes

yes

yes

Note

從Linux到Windows的凍結只有PyInstaller支持, 其余的。

Note

所有解決方案,除了py2app以外,需要在目標機器上安裝了Microsoft Visual C++ dll。 只有PyInstaller可通過傳遞 --onefileConfigure.py 中, 創建綁定了合適dll、可以自運行的exe文件。

Windows?

bbFreeze?

前置要求是安裝 Python, Setuptools 以及 pywin32 的依賴項。

Todo

補充更多簡單的生成 .exe的步驟。

  1. 安裝 bbfreeze:

$ pip install bbfreeze
  1. 編寫最基本的 bb_setup.py

from bbfreeze import Freezer

freezer = Freezer(distdir='dist')
freezer.addScript('foobar.py', gui_only=True)
freezer()

Note

這將適用于最基本的文件腳本。 要進行更高級的凍結,您必須提供包含和排除類似路徑

freezer = Freezer(distdir='dist', includes=['my_code'], excludes=['docs'])
  1. (可選) 包含圖標

freezer.setIcon('my_awesome_icon.ico')

4. 為凍結器(freezer)提供Microsoft Visual C運行時DLL。 將Microsoft Visual Studio 路徑 附加您的 sys.path 中是可以的,但我發現在腳本所在同一文件夾中放 msvcp90.dll 則更加容易。

  1. 凍結!

$ python bb_setup.py

py2exe?

前置要求是安裝了 Python on Windows。py2exe 的最后一個版本是從2014年開始的,且沒有處于積極的開發中。

  1. 下載并且安裝 http://sourceforge.net/projects/py2exe/files/py2exe/

  2. 編寫 setup.py (配置選項清單):

from distutils.core import setup
import py2exe

setup(
    windows=[{'script': 'foobar.py'}],
)
  1. (可選) 包含圖標

  2. (可選) 單文件模式

  3. 生成 :file: .exedist 目錄:

$ python setup.py py2exe

6.提供Microsoft Visual C 運行時DLL。兩個選項: 在目標機器全局安裝dll 或者 與.exe一起分發dll。

PyInstaller?

前置是安裝 Python, Setuptools 以及pywin32 依賴項.

OS X?

py2app?

PyInstaller?

PyInstaller可用于在Mac OS X 10.6(Snow Leopard)或更新版本上構建Unix可執行文件和 窗口應用程序。

要安裝PyInstaller, 使用pip:

$ pip install pyinstaller

要創建標準的Unix可執行文件, 使用 script.py

$ pyinstaller script.py

這會創建,

script.py 會把全部內容放在同一個文件夾中。PyInstaller將所有 script.py 用到的Python庫放到 dist 文件夾中。所以在分發可執行文件時,會分發整個 dist 文件夾。

script.spec 文件可以編輯成 自定義構建 , 比如可以:

現在:代碼 script.spec 可以用 pyinstaller (而不是再次使用 script.py )運行。

$ pyinstaller script.spec

要創建獨立的OS X窗口應用程序,請使用 --windowed 選項:

$ pyinstaller --windowed script.spec

這將在 dist 文件夾中創建一個代碼 script.app 。請確保在Python代碼中 使用GUI軟件包,例如 PyQtPySide,來控制應用程序的圖形部分。

script.spec 有幾個與Mac OS X應用程序捆綁有關的 選項 。 例如,要指定應用程序的圖標,請使用 icon=\path\to\icon.icns 選項。

Linux?

bbFreeze?

Warning

bbFreeze 僅在 Python 2.x 環境下工作, 根據以前的維護者的說法已不再進行維護。 如果您對此感興趣請查看 這里。

bbFreeze可以與所有已安裝Python以及pip2和/或easy_install的發行版一起使用。

對于pip2,請按以下內容進行:

$ pip2 install bbfreeze

而對于 easy_install,則:

$ easy_install bbfreeze

安裝好bbFreeze后,您就可以凍結應用程序了。

假設您有一個腳本,例如“hello.py”和名為“module.py”的模塊,并且您在里面使用了一個函數。 不費吹灰之力,您就可以通過凍結腳本的主要入口來凍結整個內容:

$ bbfreeze script.py

這樣,它就會創建一個名為dist/的文件夾,其中包含腳本的可執行文件以及Python腳本中使用的庫所需.so(共享對象)文件。

或者,您可以創建一個用于執行凍結的腳本。 凍結器的API可從以下庫中獲得:

from bbfreeze import Freezer

freezer = Freezer(distdir='dist')
freezer.addScript('script.py', gui_only=True) # 為使用GUI包的應用開啟參數 gui_only
freezer()

PyInstaller?

PyInstaller在Linux上的安裝方式與在OS X中類似,參見OS X章節中的對應部分。

不要忘記安裝如Python和pip等依賴項。

最近更新中文字幕手机版,18成禁人看免费无遮挡动态图,无码人妻天天拍夜夜爽
<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>