个用PyQt开发的软件,py2exe打包成一个exeexe后有多大

使用Py2exe将PyQt程序打包为exe文件 - CSDN博客
使用Py2exe将PyQt程序打包为exe文件
本文转载自:/111.html
Py2exe可以将一个Python程序打包成exe可执行文件,方便没有Python环境的电脑上使用程序。使用Py2exe打包需要编写一个打包脚本,执行后可以得到打包文件。对于32位版本,Py2exe可以将程序打包成单文件;对于64位版本,暂时还不支持打包成单文件。不过,无论如何压缩,目前Py2exe打包出来的程序都还是偏大的。
OS:Windows 7 64bits
Python:2.7.2(64bits)
PyQt: 4.9.6
OS:Windows 7 32bits/Windows XP 32bits
Python:2.7.2(32bits)
PyQt: 4.9.6
3.软件下载
上提供的中,可以下载到2008年11月更新的0.6.9版本,包括针对Python2.3-2.7的32位版本和针对Python2.5-2.7的64位版本。
我们也可以到这个网站下载0.6.10dev版本。顺便说一句,请将此网站保存至书签,这里提供了很多Python插件官方版本中没有支持的64位版本和Python版本的插件编译后的非官方下载。
双击exe文件,一路next下去即可。需要注意的是,32位版本和64位版本必须和Python使用的版本配套。
在一个PyQt项目中,添加一个文件,其内容为:
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&],
&dll_excludes&: [&MSVCP90.dll&,],
&compressed&: 1,
&optimize&: 2,
&ascii&: 0,
&bundle_files&: 1,
name = 'PyQt Demo',
version = '1.0',
windows = ['url.py',],
zipfile = None,
options = {'py2exe': py2exe_options}
sys.argv.append('py2exe')一行,是允许程序通过双击的形式执行。
选项中“includes”是需要包含的文件,这里的”sip”是PyQt程序打包时需要添加的,如果不是PyQt程序不需要此项。
“dll_excludes”是需要排除的dll文件,这里的”MSVCP90.dll”文件,如果不排除的话会报error: MSVCP90.dll: No such file or directory错误。
“compressed”为1,则压缩文件。
“optimize”为优化级别,默认为0。
“ascii”指不自动包含encodings和codecs。
“bundle_files”是指将程序打包成单文件(此时除了exe文件外,还会生成一个zip文件。如果不需要zip文件,还需要设置zipfile = None)。1表示pyd和dll文件会被打包到单文件中,且不能从文件系统中加载python模块;值为2表示pyd和dll文件会被打包到单文件中,但是可以从文件系统中加载python模块。64位的Py2exe不要添加本句。
windows = ['pyqtdemo.py',],这里使用的是windows,即没有命令行窗口出现,如果使用console则表示有命令行窗口出现。
执行该文件,会得到一个build文件夹和一个dist文件夹。其中,dist文件夹,就是你得到的打包程序。
如果按照上述代码执行成功,则应该dist文件夹中,只包括程序的exe文件和w9xpopen.exe。w9xpopen.exe是针对windows9x版本的,一般来说该文件并不需要。
如果bundle_files不为1、2,则dist文件夹中还会包括一些dll文件和pyd文件(Python Dll文件)。如果bundle_files为2,dist文件夹会包括一个python##.dll文件,如果为1则不会。
如果没有使用zipfile=None,还会生成一个library.zip文件。
6.常见问题
6.1 error: MSVCP90.dll: No such file or directory
解决方法,按如上程序,将该dll写入dll_excludes中。
在其他电脑如果无法运行,可能是由于该电脑中没有安装Microsoft Visual C++ 2008 Redistributable - x86造成的,请到微软官网上下载安装该程序,或将MSVCP90.dll放入dist文件夹(注意:方法未验证)。
6.2 error: bundle-files 1 not yet supported on win64
对于64位的Py2exe而言,bundle_files选项目前仍不可用,无法生成为单文件。
6.3 图标等不显示
网上的一种说法是这是Py2exe打包时没有将其打包进来造成的,可以将“Python\Lib\site-packages\PyQt4\plugins\imageformats”文件夹复制到dist目录下,再执行打包脚本。不过我在实验的过程中并没有发现这个问题。
当然,一定要注意,把你图标按照程序中写的位置放入到dist目录下。否则,当然不会显示。
6.4 执行程序有命令行的黑框
将setup函数中的console改为windows。
本文已收录于以下专栏:
相关文章推荐
使用Py2exe将PyQt程序打包为exe文件
Py2exe可以将一个Python程序打包成exe可执行文件,方便没有Python环境的电脑上使用程序。使用...
前面部分是从别的博客上看到的,直接贴出来了
【python里 用 setWindowIcon设置了ico 文件 直接执行是有图标的 但用py2exe打包后 图标显示不出来
最终还是google到...
PyQt程序打包发布步骤
先说成功经历:1、打包Python3.3+PyQt5程序2、打包普通程序在他人电脑上运行
再说说打包工具,基本上现在在网上看到就三种,pyinstaller、cxfreeze...
py2exe打包主要分为两大类:(1)、普通python脚本程序打包,不包含图形界面库。此类程序打包我用了两种方法:           方法一、比较常见,网上大多用这种方法。代码实例如下:#!/us...
打包环境:
Python版本:python-2.7
操作系统:windows 7
Py2exe版本:py2exe-0.6.9.win32-py2.7(必须与python版本对应)
打包目录: ...
李老大给了一个python脚本,要我调好参数以后,打包成exe,然后从xlsx文件中读取信息,批量处理pdf文件,给同一个pdf文件加不同的水印。确实是一个神奇的脚本。 李老大的程序我就偷偷上传了。 ...
版权所有,转载请注明出处:http://guangboo.org//build-package-with-py2exe-inno-setup
在使用python开发windows...
py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。
本文主要介绍如何通过pyinstaller对PyQt5项目进行打包,生成可执行的exe文件。主要针对Python3.5+PyQt5.6的环境。
1、Python3.5+PyQt5.6安装
我们可以在ArcGIS之外调用arcpy站点包运行python独立脚本,从而批量化任务提高工作效率。 如果可以把做好的脚本打包成exe是不是就更方便了呢?想想一键式处理也挺开心的。Python打包的问...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)使用Py2exe将PyQt程序打包为exe文件 - CSDN博客
使用Py2exe将PyQt程序打包为exe文件

使用Py2exe将PyQt程序打包为exe文件
Py2exe可以将一个Python程序打包成exe可执行文件,方便没有Python环境的电脑上使用程序。使用Py2exe打包需要编写一个打包脚本,执行后可以得到打包文件。对于32位版本,Py2exe可以将程序打包成单文件;对于64位版本,暂时还不支持打包成单文件。不过,无论如何压缩,目前Py2exe打包出来的程序都还是偏大的。
OS:Windows 7 64bits
Python:2.7.2(64bits)
PyQt: 4.9.6
OS:Windows 7 32bits/Windows XP 32bits
Python:2.7.2(32bits)
PyQt: 4.9.6
3.软件下载
上提供的中,可以下载到2008年11月更新的0.6.9版本,包括针对Python2.3-2.7的32位版本和针对Python2.5-2.7的64位版本。
我们也可以到这个网站下载0.6.10dev版本。顺便说一句,请将此网站保存至书签,这里提供了很多Python插件官方版本中没有支持的64位版本和Python版本的插件编译后的非官方下载。
双击exe文件,一路next下去即可。需要注意的是,32位版本和64位版本必须和Python使用的版本配套。
在一个PyQt项目中,添加一个文件,其内容为:
Py2exe打包脚本
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&],
&dll_excludes&: [&MSVCP90.dll&,],
&compressed&: 1,
&optimize&: 2,
&ascii&: 0,
&bundle_files&: 1,
name = 'PyQt Demo',
version = '1.0',
windows = ['pyqtdemo.py',],
zipfile = None,
options = {'py2exe': py2exe_options}
distutils.core
import setup
import py2exe
#this allows to run it with a simple double click.
sys.argv.append('py2exe')
py2exe_options =
&&&&&&&&&includes&:
&&&&&&&&&dll_excludes&:
[&MSVCP90.dll&,],
&&&&&&&&&compressed&:
&&&&&&&&&optimize&:
&&&&&&&&&ascii&:
&&&&&&&&&bundle_files&:
&&&&&&name
= 'PyQt Demo',
&&&&&&version
&&&&&&windows
= ['pyqtdemo.py',],
&&&&&&zipfile
&&&&&&options
= {'py2exe':
py2exe_options}
sys.argv.append('py2exe')一行,是允许程序通过双击的形式执行。
选项中“includes”是需要包含的文件,这里的”sip”是PyQt程序打包时需要添加的,如果不是PyQt程序不需要此项。
“dll_excludes”是需要排除的dll文件,这里的”MSVCP90.dll”文件,如果不排除的话会报error: MSVCP90.dll: No such file or directory错误。
“compressed”为1,则压缩文件。
“optimize”为优化级别,默认为0。
“ascii”指不自动包含encodings和codecs。
“bundle_files”是指将程序打包成单文件(此时除了exe文件外,还会生成一个zip文件。如果不需要zip文件,还需要设置zipfile = None)。1表示pyd和dll文件会被打包到单文件中,且不能从文件系统中加载python模块;值为2表示pyd和dll文件会被打包到单文件中,但是可以从文件系统中加载python模块。64位的Py2exe不要添加本句。
windows = ['pyqtdemo.py',],这里使用的是windows,即没有命令行窗口出现,如果使用console则表示有命令行窗口出现。
执行该文件,会得到一个build文件夹和一个dist文件夹。其中,dist文件夹,就是你得到的打包程序。
如果按照上述代码执行成功,则应该dist文件夹中,只包括程序的exe文件和w9xpopen.exe。w9xpopen.exe是针对windows9x版本的,一般来说该文件并不需要。
如果bundle_files不为1、2,则dist文件夹中还会包括一些dll文件和pyd文件(Python Dll文件)。如果bundle_files为2,dist文件夹会包括一个python##.dll文件,如果为1则不会。
如果没有使用zipfile=None,还会生成一个library.zip文件。
6.常见问题
6.1 error: MSVCP90.dll: No such file or directory
解决方法,按如上程序,将该dll写入dll_excludes中。
在其他电脑如果无法运行,可能是由于该电脑中没有安装Microsoft Visual C++ 2008 Redistributable - x86造成的,请到微软官网上下载安装该程序,或将MSVCP90.dll放入dist文件夹(注意:方法未验证)。
6.2 error: bundle-files 1 not yet supported on win64
对于64位的Py2exe而言,bundle_files选项目前仍不可用,无法生成为单文件。
6.3 图标等不显示
网上的一种说法是这是Py2exe打包时没有将其打包进来造成的,可以将“Python\Lib\site-packages\PyQt4\plugins\imageformats”文件夹复制到dist目录下,再执行打包脚本。不过我在实验的过程中并没有发现这个问题。
当然,一定要注意,把你图标按照程序中写的位置放入到dist目录下。否则,当然不会显示。
6.4 执行程序有命令行的黑框
将setup函数中的console改为windows。
本文已收录于以下专栏:
相关文章推荐
Py2exe可以将一个Python程序打包成exe可执行文件,方便没有Python环境的电脑上使用程序。使用Py2exe打包需要编写一个打包脚本,执行后可以得到打包文件。对于32位版本,Py2exe可...
Python、opencv安装,import cv2,运行时:
=============================  报错============================
昨天尝试使用PyQt4为Caffe测试程序写了一个界面程序,又把这个python程序转换成了.exe.这过程遇到了不少问题,有的已经解决,有的没有解决,还希望高手帮忙。
先贴出我的界面吧,忙了一天看...
running py2exe
creating D:\data\bitbucket\weixin_project\build
creating D:\data\bitbucket\weixin_p...
py2exe 打包注意事项
开发环境中只有 PyQt4, 不要安装 Qt 的开发包或者 PySide, 否则打包的 dll 可能会拷贝这两个包的 DLL 而导致程序不能加载运行. 注意要拷贝 V...
一、简述      Py2exe,从这个名字上就可以理解,把Python脚本转换为windows平台上面可以运行的可执行程序(*.exe)的工具。经过转换后,你可以不用安装Python的执行环境就可以...
py2exe打包PyQt项目若干问题总结
日期: | 
来源:未知 |  作者:redice | 
1517 人围观 |  1 人鼓掌了!
鲲鹏Web数据抓...
pyqt5程序使用py2exe打包后运行时报找不到Qt platform plugin ‘windows’错误现象描述:64位windows系统下直接将pyqt5的plugins下的platforms...
PyQt程序打包发布步骤
先说成功经历:1、打包Python3.3+PyQt5程序2、打包普通程序在他人电脑上运行
再说说打包工具,基本上现在在网上看到就三种,pyinstaller、cxfreeze...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Python中.py文件打包成exe可执行文件详解
作者:dearvee
字体:[ ] 类型:转载 时间:
这篇文章主要给大家介绍了在Python中.py文件打包成exe可执行文件的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
最近做了几个简单的爬虫python程序,于是就想做个窗口看看效果。
首先是,窗口的话,以前没怎么接触过,就先考虑用Qt制作简单的ui。这里用前面sinanews的爬虫脚本为例,制作一个获取当天sina头条新闻的窗口。
生成py文件后,运行该py文件,这里窗口我只是随便拖了几个组件进去,主要的text browser用于显示获取到的sinanews。
首先贴一下我的配置
官方下载:
  (当安装完Python3.3后,安装对应PyQt,其会找到Python安装目录,不用更改安装目录)
本地下载:
&&&&&&& (当安装完Python3.3后,安装对应PyQt,其会找到Python安装目录,不用更改安装目录)
Python3.3默认是没有安装pip的,需要运行之后,提示安装成功。
接下来就要安装一些必要的组件了。为了安装方便,先把pip添加进环境变量。
下面我们就可以用pip命令安装组件了。
先把sina_news.py贴出来,观察需要哪些组件。
import requests
from bs4 import BeautifulSoup
res = requests.get('.cn/china/')
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
for news in soup.select('.news-item'):
if len(news.select('h2')) & 0:
h2 = news.select('h2')[0].text
a = news.select('a')[0]['href']
time = news.select('.time')[0].text
print(time,h2,a)
发现import requests,import BeautifulSoup 所以先来安装这些组件
pip install requests
pip install BeautifulSoup4
当我们把这段代码贴进窗口代码后:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'x.ui'
# Created by: PyQt5 UI code generator 5.8.1
# WARNING! All changes made in this file will be lost!
import sys
import requests
from PyQt5 import QtCore, QtGui, QtWidgets
from bs4 import BeautifulSoup
class Ui_x(object):
def getNews():
res = requests.get('.cn/china/')
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
title = []
for news in soup.select('.news-item'):
if len(news.select('h2')) & 0:
h2 = news.select('h2')[0].text
title.append(h2)
a = news.select('a')[0]['href']
time = news.select('.time')[0].text
return '\n'.join(title)
def setupUi(self, x):
x.setObjectName("x")
x.resize(841, 749)
self.timeEdit = QtWidgets.QTimeEdit(x)
self.timeEdit.setGeometry(QtCore.QRect(310, 10, 141, 31))
self.timeEdit.setObjectName("timeEdit")
self.dateEdit = QtWidgets.QDateEdit(x)
self.dateEdit.setGeometry(QtCore.QRect(100, 10, 191, 31))
self.dateEdit.setObjectName("dateEdit")
self.textBrowser = QtWidgets.QTextBrowser(x)
self.textBrowser.setGeometry(QtCore.QRect(60, 80, 701, 641))
self.textBrowser.setObjectName("textBrowser")
self.retranslateUi(x)
QtCore.QMetaObject.connectSlotsByName(x)
def retranslateUi(self, x):
_translate = QtCore.QCoreApplication.translate
x.setWindowTitle(_translate("x", "x"))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_x()
ui.setupUi(Form)
Form.show()
ui.textBrowser.setText(Ui_x.getNews())
sys.exit(app.exec_())
如果前面顺利的话,现在用python运行x.py应该能看到显示的窗口。
下面就是打包的过程了,这里笔者用的Pyinstaller,没有安装的话,要安装一下:
pip install pyinstaller
安装完成后,cmd路径cd到x.py所在目录。
打包命令:
Pyinstaller -w x.py
此时,在x.py便生成dist文件夹,打包的x.exe就在此文件夹下。双击x.exe显示效果:
当然还有许多改进的地方,比如在上面选择日期,获得指定日期的头条新闻。
笔者在这片博文主要介绍py文件的打包过程。
可能遇到的问题:
打开打包后的程序无法运行显示:
ImportError: No module named 'queue'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "test.py", line 2, in &module&
File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\requests\__init__.py", line 63, in &module&
File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\requests\utils.py", line 24, in &module&
File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\requests\_internal_utils.py", line 11, in &module&
File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\requests\compat.py", line 11, in &module&
File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\requests\packages\__init__.py", line 29, in &module&
ImportError: No module named 'urllib3'
Failed to execute script test
当然这个错误代码,当时我没有保留,这是版本不匹配造成的:
我的Pyinstaller为3.2
需要降低requests的版本,requests2.10可以成功打包,而2.11就不行。这里贴上解决此问题用到的不知道以后会不会修复这个问题。这个bug昨天做梦我还梦到呢。今天早上起来就解决了,兴奋的受不了。希望在此过程中遇到的问题对你会有所帮助。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具用py2exe打包pyqt4出现的问题(转)
使用pyqt完成窗体界面很方便,但是打包成exe之后会有问题,在网上找到解决办法如下:
Another Solution to the same problem:
from distutils.core import setup
import py2exe
setup(windows=[{"script":"main.py"}], options={"py2exe":{"includes":["sip"]}})
I found that on the web, unfortunately don't know anymore where,
but it also works for me!
Obviously is the second part only a way to get the " --includes
sip" parameter directly into the script, but the use of "windows"
instead of "console" doesn't open a console window, but immediately
a Qt window in my case.
Fix for PyQt4
If you get the following error:
ImportError: No module named _qt
The solution is to add PyQt4._qt to the setup function (see
bellow). I found the solution for the problem .
1 from distutils.core import setup
2 import py2exe
4 setup(windows=[{"script" : "app.pyw"}], options={"py2exe" : {"includes" : ["sip", "PyQt4._qt"]}})
或者我们直接在源代码中加入:
import sip& #程序打包需要
import& decimal #程序打包需要
也是可以的。
我的更多文章:
( 00:00:28)( 00:10:50)( 00:08:40)( 09:01:38)( 09:32:35)( 22:10:25)( 10:33:15)( 09:03:28)( 17:56:59)( 12:29:30)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 qt开发 打包exe安装包 的文章

 

随机推荐