使用cx_freeze把python打包exe示例
需要使用到的文件wxapp.py, read_file.py, setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#file: wxapp.py
import wx
import os
import sys
import read_file
class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None, title='Hello from cx_Freeze')
panel = wx.Panel(self)
closeMeButton = wx.Button(panel, -1, 'Close Me')
wx.EVT_BUTTON(self, closeMeButton.GetId(), self.OnCloseMe)
wx.EVT_CLOSE(self, self.OnCloseWindow)
pushMeButton = wx.Button(panel, -1, 'Push Me')
wx.EVT_BUTTON(self, pushMeButton.GetId(), self.OnPushMe)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(closeMeButton, flag=wx.ALL, border=20)
sizer.Add(pushMeButton, flag=wx.ALL, border=20)
panel.SetSizer(sizer)
topSizer = wx.BoxSizer(wx.VERTICAL)
topSizer.Add(panel, flag=wx.ALL | wx.EXPAND)
topSizer.Fit(self)
def OnCloseMe(self, event):
obj = read_file.PrintContent()
if getattr(sys, 'frozen', None):
path = os.path.dirname(sys.executable)
else:
path = os.path.dirname(__file__)
path = os.path.join(path, "read_file.py")
obj.show_content(path)
def OnPushMe(self, event):
wx.MessageBox('I was pushed!', 'Informational message')
def OnCloseWindow(self, event):
self.Destroy()
class App(wx.App):
def OnInit(self):
frame = Frame()
frame.Show(True)
self.SetTopWindow(frame)
return True
app = App(1)
app.MainLoop()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#file: read_file.py
class PrintContent(object):
def show_content(self, path):
f = open(path)
for line in f:
print line
f.close()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#file: setup.py
# A simple setup script to create an executable running wxPython. This also
# demonstrates the method for creating a Windows executable that does not have
# an associated console.
#
# wxapp.py is a very simple 'Hello, world' type wxPython application
#
# Run the build process by running the command 'python setup.py build'
#
# If everything works well you should find a subdirectory in the build
# subdirectory that contains the files needed to run the application
import sys
from cx_Freeze import setup, Executable
build_exe_options = {"optimize": 2,
"include_files": ["read_file.py"]}
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
executables = [Executable(script='wxapp.py',
base=base,
targetName="Demo.exe",
compress=True,
icon="py.ico")]
setup(name='wxapp',
version='0.1',
description='Sample cx_Freeze wxPython script',
options = {"build_exe": build_exe_options},
executables=executables)
打開cmd進(jìn)入代碼所在目錄,然后輸入:
python setup.py bdist_msi
然后會(huì)生成build和dist兩個(gè)文件夾,build文件夾里存放的是exe可執(zhí)行文件和所依賴的庫(kù),直接把整個(gè)文件夾復(fù)制給別人就可以通過雙擊exe文件運(yùn)行了,dist文件夾下是build文件夾的安裝程序,直接傳dist文件夾下的安裝包給朋友,朋友運(yùn)行安裝包后會(huì)得到和build一樣的文件夾,路徑由用戶自己選擇
至于setup.py里面的參數(shù)選項(xiàng)可以自己去官網(wǎng)查看相應(yīng)的選項(xiàng)信息
相關(guān)文章
Python實(shí)現(xiàn)獲取磁盤剩余空間的2種方法
這篇文章主要介紹了Python實(shí)現(xiàn)獲取磁盤剩余空間的2種方法,結(jié)合具體實(shí)例形式分析了Python操作計(jì)算機(jī)硬件的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06在PyCharm中實(shí)現(xiàn)關(guān)閉一個(gè)死循環(huán)程序的方法
今天小編就為大家分享一篇在PyCharm中實(shí)現(xiàn)關(guān)閉一個(gè)死循環(huán)程序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11python?pipreqs工具生成requirements.txt文件使用詳解
這篇文章主要為大家介紹了python?pipreqs工具生成requirements.txt文件使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Python使用requests及BeautifulSoup構(gòu)建爬蟲實(shí)例代碼
這篇文章主要介紹了Python使用requests及BeautifulSoup構(gòu)建爬蟲,介紹了具體操作步驟和實(shí)例代碼等相關(guān)內(nèi)容,小編覺得還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下2018-01-01Python實(shí)現(xiàn)將視頻按照時(shí)間維度剪切
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)將視頻按照時(shí)間維度進(jìn)行剪切,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12使用Python進(jìn)行體育競(jìng)技分析(預(yù)測(cè)球隊(duì)成績(jī))
這篇文章主要介紹了用Python進(jìn)行體育競(jìng)技分析(預(yù)測(cè)球隊(duì)成績(jī)),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05沒有安裝Python的電腦運(yùn)行Python代碼教程
你有沒有遇到過這種情況,自己辛苦碼完了代碼想發(fā)給別人運(yùn)行看效果,可是對(duì)方竟然沒安裝Python,這要怎么運(yùn)行呢?本篇文章帶你解決這個(gè)問題,需要的朋友快來看看2021-10-10python導(dǎo)包的幾種方法(自定義包的生成以及導(dǎo)入詳解)
這篇文章主要介紹了python導(dǎo)包的幾種方法(自定義包的生成以及導(dǎo)入詳解),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07