|
上回在《使用 PyInstaller 打包 Python 程序》中,我們介紹了使用 PyInstaller 對 Python 程序進(jìn)行打包,今天帶大家認(rèn)識(shí)一個(gè)新的工具:py2exe。 接下來將從這幾個(gè)方面進(jìn)行介紹:基本使用方法、高級參數(shù)、注意點(diǎn)等。 簡介 & 安裝py2exe 是一個(gè)將 python 腳本轉(zhuǎn)換成 Windows 上的可獨(dú)立執(zhí)行的可執(zhí)行程序(*.exe)的工具,這樣,你就可以不用裝 python 而在 Windows 系統(tǒng)上運(yùn)行這個(gè)可執(zhí)行程序。
pip install py2exe# 或者python -m pip install py2exe
基本用法看一個(gè)簡單的例子:先寫一個(gè)簡單的腳本,文件名:: #!/usr/bin/env python # -*- coding: utf-8 -*-
def say_hello(name):
print('Hello, ' name)
if __name__ == '__main__':
name = input('What's your name:')
say_hello(name)123456789123456789123456789123456789 下面還需要個(gè)用于發(fā)布程序的設(shè)置腳本:,在其中的 setup 函數(shù)前插入語句
python py2exe11 運(yùn)行生成的文件:
上面的命令執(zhí)行后將產(chǎn)生一個(gè)名為 dist 的子目錄,其中包含了 helloworld.exe、python24.dll、library.zip 等等文件:
dist 子目錄中的文件包含了程序所必須的東西,你需要將該目錄中的所有內(nèi)容一起發(fā)布。 默認(rèn)情況下,py2exe 會(huì)在 dist 下創(chuàng)建以下這些文件: 1、一個(gè)或多個(gè) exe 文件; 擴(kuò)展setup 優(yōu)化我們可以看到生成的 dist 目錄中文件很多,那么是不是可以進(jìn)行優(yōu)化呢?
options 可以用來指定一些編譯的參數(shù),譬如是否壓縮,是否打包為一個(gè)文件等。 再次運(yùn)行后,發(fā)現(xiàn)所有內(nèi)容打包進(jìn)了一個(gè) helloworld.exe 程序中。 指定額外的文件一些應(yīng)用程序在運(yùn)行時(shí)需要額外的文件,諸如配置文件、字體、圖標(biāo)。py2exe 并不會(huì)自動(dòng)把他們打包到 dist 目錄,不過可以通過配置參數(shù)來打包。 可以在安裝腳本中用 格式如下:data_files=[(“目的文件夾”,[“文件名”,]), (“目的文件夾”,[“文件名”,]), (“目的文件夾”,[“文件名”,]),]。 比如,我們的程序中有一個(gè)名為 images 的目錄放置了程序需要的圖片, 那么我們就需要在 setup 函數(shù)中配置參數(shù) data_files,這個(gè)參數(shù)包含一個(gè)元組列表 示例如下: from distutils.core import setupimport py2exe
setup(
windows = ['hello.py],
data_files = [('images',['images\*.jpg'])]
)12345678123456781234567812345678 上面的示例中,會(huì)把 images 目錄中所有的 jpg 文件打包到 dist/images 子目錄中。 注意點(diǎn)1、py2exe 新版本只支持 python3.3 以上,可以使用 pip install py2exe_py2 來安裝兼容 python2 版本; 4、從 Python 3.3,Windows 在構(gòu)建 Python 時(shí)使用的是 Visual Studio 2010,因此生成后,需要手動(dòng)將 msvcr100.dll 拷到生成目錄下(dist目錄),否則最終的文件運(yùn)行時(shí)可能會(huì)報(bào)錯(cuò); 或者通過 比如,我在 Win10 下打的包,拷貝到 Win7 上,運(yùn)行出錯(cuò):
出現(xiàn)類似確實(shí) dll 文件的情況,都可以參考這種方法進(jìn)行解決; 總結(jié)對于 pyinstaller 和 py2exe 兩種把 Python 文件打包成 exe 的可執(zhí)行文件的方法,都有各自的優(yōu)缺點(diǎn)。但是最終目的都是為了在沒有 Python 環(huán)境下的普通 Windows 系統(tǒng)的電腦中可直接運(yùn)行,這點(diǎn)還是很不錯(cuò)的。 大家根據(jù)自己的需要,擇優(yōu)選擇就行了。
|
|
|