wxPython开发总结---将Python源代码打包成exe可执行文件

19 篇文章 3 订阅
订阅专栏

关注公众号“码农帮派”,查看更多系列技术文章:

 

python的源代码要在没有安装/配置Python相关开发环境的电脑上运行,那么就需要使用工具对源代码进行打包,在windows上运行则必须打包成exe可执行文件,现在常用的打包工具有:

py2exe,PyInstaller以及cx-Freeze0

PyInstaller打包太慢,过程太长;

cx-Freeze可以说飞速打包;

py2exe打包相对比较麻烦,需要另外写一个Python的脚本文件.

下面使用py2exe工具打包Python源码,针对我打包过程中遇到的问题,给出解决办法.

使用py2exe打包需要写一个Python的脚本文件:

setup.py

 

#coding=utf-8
from distutils.core import setup
import py2exe
import glob
#
libRootPath = r'D:\ProgramStudy\python278'

data_files = ["E:\python_p\logo.ico",
              (r'mpl-data', glob.glob(libRootPath+r'\Lib\site-packages\matplotlib\mpl-data\*.*')),
              (r'mpl-data', [libRootPath+r'\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']),
              (r'mpl-data\images', glob.glob(libRootPath+r'\Lib\site-packages\matplotlib\mpl-data\images\*.*')),
              (r'mpl-data\fonts', glob.glob(libRootPath+r'\Lib\site-packages\matplotlib\mpl-data\fonts\*.*'))]

setup(
    windows=[
        {
            "script":'study_main.py',
            "icon_resources":[(1, "logo.ico")]
        }],
    options = {
        'py2exe':
                   {
                       'dll_excludes':['MSVCP90.dll', 'numpy-atlas.dll'],
                        "includes": ["matplotlib.backends", "matplotlib.figure", "pylab", "numpy", "matplotlib.backends.backend_tkagg"],
                        'excludes': ['_gtkagg', '_tkagg', '_agg2', '_cairo', '_cocoaagg', '_fltkagg', '_gtk', '_gtkcairo', ]
                   }
    },
    data_files=data_files
)

 

 

 

【说明】

(1)需要安装py2exe的Python库,可以使用pip install安装工具,也可以在官网下载安装;

 

(2)由于打包的过程会需要很多dll动态链接库文件,以及lib文件,需要我们在data_file中指定这些文件的位置,是在你电脑中Python安装目录下,由于我的项目中使用到了matplotlib来画图,所以会用到Python/Lib下matplotlib的lib和dll文件;

 

(3)第8行,指定了项目的logo所在的位置,需要时ico格式的图片,win7上logo无法正常显示,需要下载Greenfish Icon Editor Pro软件对你的icon文件进行处理,处理方法网上有;

(4)第17行,指定项目的入口文件,无论项目的文件有多少个,此处只需要指定入口的那个文件,就是有:

 

if __name__ == "__main__":
    main()

 

的文件;

(5)第23行,使用py2exe打包可能会有下面的错误:

 

Error: “MSVCP90.dll: No such file or directory”

此时就需要加第23行的这一句,本项目中使用matplotlib画图,而matplotlib是依赖numpy库的,同时可能会报numpy-atlas.dll no such file的错误,同样可以添加。
 
(6)numpy-atlas.dll的缺失,会导致程序打包正常,但点击打包之后的exe没有任何反应,可能失去少某些dll动态链接库文件,numpy-atlas.dll库文件在python安装目录下,搜索一下就找到了,另外,要是exe可执行文件点击之后没有反应,可以将其拖拽到cmd命令行中执行,会打印出出现的错误。
 
完成了上面的脚本文件之后,在命令行中执行打包操作:
python setup.py py2exe
就开始自动打包。
 
【注意】上面setup.py文件就是上面编写的打包脚本。
 
【其他需要说明的】
 
(1)兼容性:
不同的系统上文件系统的路径表示的格式是不太相同的,比如我们项目的用到的图片都放在项目根目录下的icon文件夹下,一种不太正确的路径定位方式:
import os.path

main_dir = os.path.split(os.path.abspath(__file__))[0]
iconRootPath = main_dir+os.sep+"icon"
正确的定位方式:
 
import os.path

iconRootPath = os.getcwdu()+os.sep+"icon"
os.getcwdu() 指向了当前项目,也就是打包后exe可执行文件所在的目录,一般不要使用斜杠或者反斜杠作为分隔符,而是使用os.sep。
 
(2)项目结构
使用py2exe打包之后的文件夹中除了一大堆dll,lib文件之外,可以找到那个exe可执行文件,但我们点击之后,回报各种资源文件找不到,加入我们在项目中使用了图片,那么需要把图片文件夹额外拷贝到项目目录下,数据库文件等等,py2exe打包过程是不会把这些资源文件打包进来的,需要手动拷贝进来:
 
(3)sRGB警告
在win7系统中,微软提高了对图片质量的检测,项目中的图片可能会弹出下面的警告框:

"iccp known incorrect sRGB profile" 警告

这不是错误,但为了提高用户的体验,需要将这个框 去除,可以使用ImageMagick对图片进行转换,其实是该软件中magick.exe这个工具进行图片转换的:
e.g. 使用magick.exe对D盘下的logo_sys.png进行转换,在cmd中执行:
magick.exe D:\logo_sys.png D:\logo_sys.png
下面的程序可以批量处理文件夹下所有的图片文件:
import os
# rootPath是需要转换的图片所在的根目录
rootPath = "D:/icon"
# magick.exe所在的路径
commandTool = os.getcwdu()+os.sep+"tools"+os.sep+'magick.exe'
# 获得rootPath目录下所有图片文件的全路径
def FindExamAllFiles():
    tmp = []
    for root, dirs, files in os.walk(rootPath):
        for filepath in files:
            imgFileFullPath = os.path.join(root, filepath)
            if imgFileFullPath.endswith('.png'):
                tmp.append(imgFileFullPath)
    return tmp

if __name__ == "__main__":
    pngPathList = FindExamAllFiles()
    for pngPath in pngPathList:
        # 拼凑cmd命令
        command = "{0} {1} {2}".format(commandTool, pngPath, pngPath)
        os.system(command)
要是我们的应用会涉及到用户自主导入图片的操作,为了保证不弹出sRGB警告框,可以在每次读入图片文件之后,调用下面的函数,首先对图片进行sRGB处理:
 
import platform # 处理文件夹中单个的图片 def convertsRGBImageFromTmp(iconFullPath): winVerName = platform.win32_ver()[0] if winVerName != None and winVerName.upper() == 'XP': return  else: command = "{0} {1} {2}".format(commandTool, iconFullPath, iconFullPath) try: os.system(command) except: pass  pass
因为sRGB的检测是在win7以及之后版本的系统上才有的,在XP的系统上是无需进行该操作的,Python提供了platform这个库来检测当前系统的版本,我们可以使用platform.win32_ver()[0]获得版本的名称,并进行不同的操作。
 
【下载】 magick.exe文件和Python转换代码文件的下载
 
(4)权限说明
正常情况下,windows系统允许你的应用从其他的路径下读取文件,但是一般不允许应用在 除应用根目录及以下的其他目录中写内容,即,你可以读取windows上大多数文件系统中的文件,只允许往os.getcwdu()目录下写内容,其他路径是不允许写操作的。

 

python编译手机可用程序_Python 程序打包 exe 可执行文件
weixin_39616367的博客
12-08 4534
可执行文件:对于非码农用户或者一些小白用户,你让他装个 Python 同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉他即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows, Linux, Mac,…)。.py 和.pyc 都比较简单,Python 本身就可以搞定。将 Python 脚本打包可执行文件有多种方式。Py...
RPA学习——Python 程序打包 exe 可执行文件
weixin_44447687的博客
07-18 1214
艺赛旗 RPA9.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 Python 程序打包工具 Python 是一个脚本语言,被解释器解释执行。它的发布方式: .py 文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装 Python 并且安装依赖的各种库。(Python 官方的各种安装包就是这样做...
python文件打包EXE应用程序的方法
09-19
相信大家都想把自己完的项目打包EXE应用文件,然后就可以放在桌面随时都能运行了,下面来分享利用pytinstaller这个第三方库来打包程序,感兴趣的朋友跟随小编一起看看吧
Python】 如何用pyinstaller打包python程序exe
weixin_33853827的博客
03-24 214
【pyinstaller】   pyinstaller在他们的官方网站上下载:http://www.pyinstaller.org/   下载完pyinstaller之后还要安装一个支持包pywin32. 这个包允许了python访问windows系统的一些API,如果没有就会在编译过程中报错。   当然,也可以用pip install pyinstaller来一站式下载pyinstalle...
wxPython,一款强大的Python
最新发布
黑马非马的博客
08-05 1322
wxPythonPython 程序员提供了一个强大的 GUI 开发工具,易于学习和使用,能够创建跨平台的应用程序。通过丰富的控件和灵活的事件处理机制,可以轻松开发出功能丰富的桌面应用程序。
Python使用wxPython、py2exe编写桌面程序
逝水流年轻染尘
09-04 3953
Python是支持可视化编程,即编写gui程序,你可以用它来编写自己喜欢的桌面程序。使用wxPython来做界面非常的简单,只是不能像C#一样拖动控件,需要自行写代码布局。在完编写之后,由于直接的py文件不能再没有安装python的电脑上运行,能否有一个打包在任意电脑都能运行的工具,网上找找发现了py2exe正好可以完这个功能。wxPython和py2exe都是开源免费软件。 wxPy
wxpython打包exe_使用cx_freeze把python打包exe示例
weixin_39522486的博客
11-28 70
#!/usr/bin/env python# -*- coding: utf-8 -*-#file: wxapp.pyimport wximport osimport sysimport read_fileclass Frame(wx.Frame):def __init__(self):wx.Frame.__init__(self, parent=None, title='Hello from c...
Python3之wxPython源代码打包Windows exe可执行文件
enum_623的专栏
11-09 831
Python3之源代码打包Windows exe可执行文件
python计算机课程&毕业设计-高德地图+58租房-源代码+可执行程序+程序使用说明.zip
03-19
9. **程序打包**:将Python源代码打包可执行程序,可能使用了PyInstaller或cx_Freeze工具,使非Python环境也能运行程序。 10. **程序文档编写**:提供的“程序使用说明”说明了如何运行和使用该程序,这涉及技术...
学生管理系统Python源代码+可执行文件
06-14
标题中的“学生管理系统Python源代码+可执行文件”表明这是一个基于Python编程语言开发的学生信息管理系统。这个系统不仅提供了源代码,让使用者可以查看和学习其内部实现,还附带了一个可执行文件,使得非程序员也...
python文件打包exe独立运行程序方法详解
12-20
首先需要安装pyinstaller库。 pip install pyinstaller exe程序打包步骤 cmd 进入要编译的python文件所在的文件夹, 然后 pyinstaller -F hello.py hello.py就是我要打包文件。 常用参数: -F 生单个的exe文件。 -w 隐藏运行窗口。 -h 可以查看帮助信息,更多指令可以通过这个查看。 最开始 D:\pyinstaller 目录下只有hello.py这一个文件,其它的文件都是后生的。 生exe文件在dist里,这个exe文件单独拿出来放在任何的位置都可以运行。 编译过程: 出现completed
python2.7,wxPython2.8,py2exe
09-19
python2.7 wxpython2.8 py2exe 都是32位版本,本人在用
wxPython贪吃蛇源码与打包程序
01-17
wxPython的贪吃蛇,包括源码和py2exe打包文件exe程序
DBeaver CE 版本 (已更新至:ce-21.2.0)
b7995547的专栏
03-25 2509
dbeaver-ce-7.0.1-win32.win32.x86_64.zip时间:2020-3-25 09:45:01 源下载地址:https://dbeaver.io/download/
写了一个基于WXpython的小程序,把文件快速合并功能进行打包
Cyber的博客
12-25 393
后续还有蛮多优化的地方:文件地址判断,完窗口提醒等等。。。 另外尴尬的是,360竟然给我报警了,说这个是勒索病毒。。。 import os import shutil import wx def copy_file(event): old_filedir = old_path_text.GetValue() new_filedir = new_path_text.GetValu...
[转]py2exe打包发布wxPython程序
PandaraWen 宝盒
11-05 664
原文:http://www.pythonclub.org/python-files/py2exe-wxpython wxPython开发,去掉command line窗口以及添加icon 写python程序,一个字,“快”;再加个字“爽”。 用wxPython做local的小程序,又快又爽。可是也有美中不足的地方,例如程序运行需要装很多runtime的环境(Python,wxPython等),这
wx 打包 .py 为 .exe 文件
a_lazy_zhu的博客
05-01 1100
需要安装pyinstaller pip install pyinstaller 把要打包python文件放到一个没有中文的路径下,并且将后缀名.py改为.pyw 。 以后只要双击该文件就能打开图形化,但是前提是要有python环境,所以要将它变为.exe可执行文件才能在windows系统里没有python环境中都可以运行。 在该路径下shift+右键 —–> 在此处打开命令窗口 在c...
py2exe打包python_py2exe打包发布wxPython程序
weixin_39844426的博客
12-19 147
wxPython开发,去掉command line窗口以及添加icon写python程序,一个字,“快”;再加个字“爽”。用wxPython做local的小程序,又快又爽。可是也有美中不足的地方,例如程序运行需要装很多runtime的环境(Python, wxPython等),这些环境通常下载不是很方便,于是python界有了py2exe,充分满足挑肥拣瘦的windows用户。忘上搜了一堆,有很多...
怎么把python wx 打包exe 文件
05-26
你可以使用 pyinstaller 工具将 Python 代码打包单独的可执行文件。 首先,你需要使用 pip 安装 pyinstaller: ``` pip install pyinstaller ``` 接下来,在命令行中进入你的 Python 代码所在的目录,使用以下命令将代码打包 exe 文件: ``` pyinstaller --onefile your_script.py ``` 其中,`your_script.py` 是你要打包Python 脚本文件名。使用 `--onefile` 选项可以将所有依赖项打包单个可执行文件打包后,你可以在 `dist` 目录中找到生exe 文件。注意,由于 pyinstaller 打包的是 Python 解释器和你的代码,所以生exe 文件会比较大。 如果你的代码中使用了 wxPython 库,你可能还需要在命令行中加上 `--hidden-import=wx` 选项来确保库能够正确打包
写文章

热门文章

  • ubuntu如何实现双屏显示 90185
  • iCCP: known incorrect sRGB profile 60042
  • C语言,指针变量的*p,p以及&p的区别 31897
  • WebStorm设置文件导入 26118
  • 微信小程序开发-短信注册功能 25942

分类专栏

  • Go 6篇
  • Golang 5篇
  • Flutter 11篇
  • iOS 1篇
  • Python 19篇
  • Android 33篇
  • IOS学习 34篇
  • Node.js 1篇
  • 大数据 2篇
  • JSP 5篇
  • Cocos2d-x学习 10篇
  • JavaWeb学习 26篇
  • Unity3D学习
  • Java 18篇
  • MachineLearning
  • 算法 1篇
  • Maya学习
  • C++/C/Objective-C/C#/MFC学习 6篇
  • phpWeb 17篇
  • web前端 13篇
  • 后台 3篇

最新评论

  • C语言,指针变量的*p,p以及&p的区别

    no3456: 刚刚起步学习,真的很想知道其中缘由,拜托了表情包

  • C语言,指针变量的*p,p以及&p的区别

    no3456: 3示例,我有点小问题,好像题目里应该是q=*p,而不是*q。作者讲的很棒,醍醐灌顶·,同时希望可以给我解惑。

  • SQL操作表数据_update操作

    __dh: 可不可以一句话增加两个人的工资

  • wxPython常用控件--wx.Font,wx.StaticText,wx.StaticBitmap,wx.Button,wx.TextCtrl

    the_Young_Marshal: 重置图片尺寸时报错:'Bitmap' object has no attribute 'Scale'该怎么处理啊?

  • Flutter中显示原生系统的视图控件

    ->人民教师: 追评:当项目有多个flutter模块时,可以通过当前flutter模块的FlutterEngine去注册插件,因为它们也实现了那两个代理方法。所以也可以注册原生视图哦。其余的可以自行尝试(PS:看到的人表情包

最新文章

  • Go学习_18_Golang的sync.Pool的对象池
  • Go学习_17_Golang实现对象池
  • Flutter_29_Flutter性能监控和优化
2020年17篇
2018年3篇
2017年13篇
2016年61篇
2015年78篇
2014年7篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家华南广场玻璃钢雕塑产品玻璃钢雕塑有什么品牌佛山小品玻璃钢雕塑杭州圣诞节商场美陈珠海玻璃钢鳄鱼雕塑内江玻璃钢人物雕塑价格绍兴工业玻璃钢雕塑摆件玻璃钢小猫雕塑新民玻璃钢圆门头雕塑玻璃钢人像雕塑造价烤漆玻璃钢雕塑合作商场美陈 招聘南京玻璃钢雕塑工厂北京专业商场美陈辽宁玻璃钢人物雕塑制作广州玻璃钢卡通雕塑彭州玻璃钢座椅雕塑内蒙古城市雕塑玻璃钢知名的玻璃钢花盆商场美陈工资河南景观玻璃钢雕塑厂家玻璃钢雕塑十大元帅合作玻璃钢门头雕塑商场导流美陈玻璃钢雕塑电镀银梅州玻璃钢卡通雕塑销售厂家河南安阳玻璃钢雕塑厂家玉林商场美陈福州玻璃钢仿真雕塑好口碑的玻璃钢卡通雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化