国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python學(xué)習(xí)教程之使用py2exe打包

2020-02-16 10:17:49
字體:
供稿:網(wǎng)友

前言

本文主要給大家介紹了關(guān)于python使用py2exe打包的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。

遇坑

之前經(jīng)過折騰,pyinstaller打包文件可以在別的windows7上運行。但是,mfk, 客戶說是xp系統(tǒng)。崩潰

使用pyinstaller各種折騰,打包出來的依然是不是有效的win32程序,各種報錯。

后來嘗試使用 py2exe 打包

使用

1、安裝 不廢話,下載exe版,傻瓜式安裝

2、使用

編寫類似一個 setup.py 文件,寫各種配置(下邊有)

調(diào)用命令

python setup.py py2exe

或者在setup.py下添加如下語句,點擊文件自動運行

sys.argv.append('py2exe')

官方示例: http://www.py2exe.org/index.cgi/Tutorial

具體參數(shù)含義見:http://www.py2exe.org/index.cgi/ListOfOptions

問題

1、不是有效的win32程序

換32位的python,其他模塊都重裝,包括pyqt5

2、py2exe UnicodeDecodeError: 'gbk' codec can't decode

py2exe 的runtime.py 里 打開文件制定為utf-8

with open(target.script, "U",encoding="UTF-8") as script_file:

3、編譯PyQt5 異常

把一句 Exception, e 該為 Exception as e 就好了

4、could not find or load the Qt platform plugin "windows"

把 C:/Python34/Lib/site-packages/PyQt5/plugins 下的 platforms 拷貝到 打包目錄下的platforms搞定

5、找不到 msvc**100.dll 問題

把system32 目錄下的 msvc**.dll 的三個dll文件拷貝到打包目錄下

分享一下完成的打包腳本

from distutils.core import setupimport py2exeimport sysimport osimport globimport shutilimport msvcrt#this allows to run it with a simple double click.sys.argv.append('py2exe')PYTHON_HOME = os.getenv('PYTHON_HOME')TARGET_DIR = '../build2'# 刪除原來生成的路徑if os.path.exists(TARGET_DIR): print("是否刪除文件夾(y/n)/t" + os.path.abspath(TARGET_DIR)) d = msvcrt.getch() if d == b'y': shutil.rmtree(TARGET_DIR) print(os.path.abspath(TARGET_DIR)+' 被刪除')def find_data_files(dlist,source,target,patterns): # 是否有特殊符號 if glob.has_magic(source) or glob.has_magic(target):  raise ValueError("Magic not allowed in src, target") ret = dlist for pattern in patterns:  # 給pattern 上添加目錄  pattern = os.path.join(source,pattern)  # 通過pattern尋找滿足條件的文件  for filename in glob.glob(pattern):   # 判斷文件是否存在   if os.path.isfile(filename):    # 獲取相對source 的相對路徑    relP = os.path.relpath(filename,source)    # 設(shè)置為目標(biāo)路徑    targetpath = os.path.join(target,relP)    # 獲取目標(biāo)文件的文件夾    path = os.path.dirname(targetpath)    ret.setdefault(path,[]).append(filename) print('-------------------')print('資源拷貝')data_files = {}# 拷貝xp需要的msvc**100.dllfind_data_files(data_files,'C:/Windows/System32/','',['msvc*100.dll'])# 拷貝pyqt5里依賴的dllfind_data_files(data_files, PYTHON_HOME+'/Lib/site-packages/PyQt5/plugins/platforms','platforms',['*.dll'])# 把當(dāng)前目錄下ui文件夾內(nèi)容拷貝到目標(biāo)文件夾的ui文件夾下find_data_files(data_files,'ui','ui',['*.*'])# 拷貝配置文件find_data_files(data_files,'config/','config/',['*.*'])# 轉(zhuǎn)成鍵值對集合data_files = data_files.items()print(data_files)print('--------------------------')OPTIONS = { 'py2exe': { "includes": ["sip"],# 導(dǎo)入依賴 sip # "dll_excludes": ["MSVCP90.dll","MSVCR100.dll"], # 是否壓縮 1 壓縮。 0 不壓縮 "compressed": 1, # 優(yōu)化級別。 0 不優(yōu)化 pyc 1 優(yōu)化 pyd 2 pyo "optimize": 2, # 依賴的包 "packages": ["xml.etree", "xml"], # 是否把dll打包到壓縮包里 # 1 所有的都打包 2 除了python解釋器,其他的都打包 3 所有的不打包 "bundle_files": 1, # 生成的文件夾 'dist_dir':TARGET_DIR },}setup(  name = '登錄器',  version = '1.0',  # 需要生成exe文件的 py。因為可能會有多個入口  windows = [  {   'script':'Login.py',   # 圖標(biāo)前的索引依賴ico里的圖標(biāo)數(shù)   "icon_resources":[(0, "ui/icon.ico")]  }  ],  data_files = data_files,  options = OPTIONS,  # 默認(rèn)生成一個 library.zip 用來存放打包數(shù)據(jù)。如果設(shè)置為None,則打包數(shù)據(jù)存放在exe文件里  zipfile = None,)print("打包結(jié)束,按任意鍵退出..") msvcrt.getch()            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 绥化市| 祁连县| 南丹县| 绥化市| 桐城市| 务川| 资中县| 永胜县| 河西区| 芮城县| 瑞昌市| 永德县| 嘉定区| 长子县| 南澳县| 临澧县| 哈密市| 建阳市| 正镶白旗| 新泰市| 安丘市| 木里| 武夷山市| 廊坊市| 本溪| 正安县| 临潭县| 贺兰县| 奉化市| 彝良县| 瑞金市| 博乐市| 壶关县| 渭南市| 鄄城县| 措勤县| 将乐县| 金平| 鸡西市| 浦县| 化隆|