python 轉 exe -- py2exe庫實錄


本文基於windows 7 + python 3.4

 

把python程序打包成exe,比較好用的庫是py2exe

其操作步驟是:

--> 編寫python程序

--> 再額外編寫一個導入了py2exe的python腳本(不妨如:setup.py)存在同一目錄下

--> 運行這個腳本,打包生成的exe文件保存在一個dist目錄下

 

三個例子:

1.命令行

2.GUI (tkinter)

3.GUI (pyqt5)

 

1. 命令行

# hello.py

print('你好,世界!')

 

# setup.py

from distutils.core import setup
import py2exe
import sys

#this allows to run it with a simple double click.
sys.argv.append('py2exe')

py2exe_options = {
        "compressed": 1,
        "optimize": 2,
        "ascii": 0,
        "bundle_files": 1,        # 其中bundle_files有效值為:
                                  # 3 (默認)不打包。
                                  # 2 打包,但不打包Python解釋器。
                                  # 1 打包,包括Python解釋器。


setup(
      name = 'console demo',
      version = '1.0',
      console = ['hello.py',],   # console 命令行執行程序
                                 # windows  窗口執行程序
      zipfile = None,
      options = {'py2exe': py2exe_options}
      )  

 

 

現在有兩個文件了

 

再進到目錄運行上面這個setup.py腳本(亦可雙擊運行該腳本)

 

然后發現多了一個dist目錄

 

可以發現dist目錄下生成了一個hello.exe文件

 

再在命令行下執行hello.exe

 

 

 

2. GUI (tkinter)

# hello.py

import tkinter as tk

root = tk.Tk()

tk.Label(root, text="你好,世界!").pack(ipadx=100, ipady=50)

root.mainloop()

 

# setup.py

from distutils.core import setup
import py2exe
import sys

#this allows to run it with a simple double click.
sys.argv.append('py2exe')

py2exe_options = {
        "compressed": 1,
        "optimize": 2,
        "ascii": 0,
        "bundle_files": 2,       # 修改:2(打包,但不打包Python解釋器)


setup(
      name = 'tk demo',
      version = '1.0',
      windows = ['hello.py',],   # 修改:windows
      zipfile = None,
      options = {'py2exe': py2exe_options}
      ) 

說明:

對tkinter打包, "bundle_files" 必須為 2,若是1會報錯

 

 

進到目錄運行上面這個setup.py腳本

 

可以發現dist目錄下生成了一個hello.exe文件和另外幾個dll文件

 

雙擊運行,出現窗口

 

 

 

3. GUI (pyqt5)

# hello.py
from PyQt5 import QtWidgets, QtCore, QtGui # 不管是否用到,只要是打包成exe,都要導入 import sys app = QtWidgets.QApplication(sys.argv) root = QtWidgets.QWidget() root.resize(200,100) QtWidgets.QLabel(root, text='你好,世界!') root.show() sys.exit(app.exec_())

說明:不管是否用到,都要導入 from PyQt5 import QtWidgets, QtCore, QtGui

 

# setup.py

from
distutils.core import setup import py2exe import sys #this allows to run it with a simple double click. sys.argv.append('py2exe') py2exe_options = { "includes": ["sip"], # PyQt5專有 #"dll_excludes": ["MSVCP90.dll",], # 魚友論壇說這句必須有,我的沒有也可以 "compressed": 1, "optimize": 2, "ascii": 0, "bundle_files": 1, #這里還是1 } setup( name = 'pyqt5 hello', version = '1.0', windows = ['hello.py',], # 窗口執行 # PyQt5專有 data_files=[("", [r"C:\Python34\Lib\site-packages\PyQt5\libEGL.dll"]), ("platforms", [r"C:\Python34\Lib\site-packages\PyQt5\plugins\platforms\qwindows.dll"])], zipfile = None, options = {'py2exe': py2exe_options} )

說明:對於pyqt5,下面兩個是必須的:

①:"includes": ["sip"]
②:data_files=[("", [r"C:\Python34\Lib\site-packages\PyQt5\libEGL.dll"]), ("platforms", [r"C:\Python34\Lib\site-packages\PyQt5\plugins\platforms\qwindows.dll"])]


進到目錄運行上面這個setup.py腳本

 

可以發現dist目錄下生成了一個hello.exe文件和另外幾個dll文件

 

雙擊運行,出現窗口

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM