欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python學習教程之使用py2exe打包

 更新時間:2017年09月24日 10:05:34   作者:boliu  
py2exe是一個將python腳本轉(zhuǎn)換成windows上的可獨立執(zhí)行的可執(zhí)行程序(*.exe)的工具,下面這篇文章主要給大家介紹了關(guān)于python學習教程之使用py2exe打包的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。

前言

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

遇坑

之前經(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 setup
import py2exe
import sys
import os
import glob
import shutil
import 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)
    # 設置為目標路徑
    targetpath = os.path.join(target,relP)
    # 獲取目標文件的文件夾
    path = os.path.dirname(targetpath)
    ret.setdefault(path,[]).append(filename) 
print('-------------------')
print('資源拷貝')
data_files = {}
# 拷貝xp需要的msvc**100.dll
find_data_files(data_files,'C:/Windows/System32/','',['msvc*100.dll'])
# 拷貝pyqt5里依賴的dll
find_data_files(data_files, PYTHON_HOME+'/Lib/site-packages/PyQt5/plugins/platforms','platforms',['*.dll'])
# 把當前目錄下ui文件夾內(nèi)容拷貝到目標文件夾的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"],# 導入依賴 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',
   # 圖標前的索引依賴ico里的圖標數(shù)
   "icon_resources":[(0, "ui/icon.ico")]
  }
  ],
  data_files = data_files,
  options = OPTIONS,
  # 默認生成一個 library.zip 用來存放打包數(shù)據(jù)。如果設置為None,則打包數(shù)據(jù)存放在exe文件里
  zipfile = None,
)
print("打包結(jié)束,按任意鍵退出..") 
msvcrt.getch()

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python打包可執(zhí)行文件的方法詳解

    Python打包可執(zhí)行文件的方法詳解

    這篇文章主要介紹了Python打包可執(zhí)行文件的方法,結(jié)合實例形式分析了Python基于py2exe及PyInstall等打包生成可執(zhí)行文件的相關(guān)技巧,需要的朋友可以參考下
    2016-09-09
  • 解決Python3用PIL的ImageFont輸出中文亂碼的問題

    解決Python3用PIL的ImageFont輸出中文亂碼的問題

    今天小編大家分享一篇解決Python3用PIL的ImageFont輸出中文亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python石頭剪刀布小游戲(三局兩勝制)

    python石頭剪刀布小游戲(三局兩勝制)

    這篇文章主要為大家詳細介紹了python石頭剪刀布小游,三局兩勝制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • python如何統(tǒng)計序列中元素

    python如何統(tǒng)計序列中元素

    這篇文章主要為大家詳細介紹了python如何統(tǒng)計序列中的元素,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python+Tkinter+多線程的實例

    python+Tkinter+多線程的實例

    這篇文章主要介紹了python+Tkinter+多線程的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python類中的self和變量用法及說明

    python類中的self和變量用法及說明

    這篇文章主要介紹了python類中的self和變量用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python編程入門之Hello World的三種實現(xiàn)方式

    Python編程入門之Hello World的三種實現(xiàn)方式

    這篇文章主要介紹了Python編程入門之Hello World的三種實現(xiàn)方式,實例分析了print輸出函數(shù)的使用及控制臺輸出的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 開啟Django博客的RSS功能的實現(xiàn)方法

    開啟Django博客的RSS功能的實現(xiàn)方法

    這篇文章主要介紹了開啟Django博客的RSS功能的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • Python + selenium + crontab實現(xiàn)每日定時自動打卡功能

    Python + selenium + crontab實現(xiàn)每日定時自動打卡功能

    這篇文章主要介紹了Python + selenium + crontab實現(xiàn)每日定時自動打卡功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • python地震數(shù)據(jù)可視化詳解

    python地震數(shù)據(jù)可視化詳解

    這篇文章主要為大家詳細介紹了python地震數(shù)據(jù)可視化的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評論