项目相关:
pyqt5
python3.6
win10
-------------------------------------------------- -------------------------------------------------- ----------------------------
pyinstaller打包文件成EXE指令简单,但是!!!会有很多坑
若了解pyinstaller反编译加密,移步:https://blog.csdn.net/magic_shuang/article/details/106426139
警告:未找到隐藏的导入“XXX”!
【解决】pip install XXX - >重新pyinstaller
【解决】pyinstaller --clean --win-private-assemblies -F XXXX.py
--clean清除pyinstaller的缓存并移除之前建立的临时文件,
--win-私人组件把跟这个程序捆绑的共享的组件都改为私有的
调试阶段不用-w,因为如果有错误就打印在终端了而不是闪退
回溯(最近一次调用最后一次):
文件“XXXXX.py”,第3行,在
文件“d:\ python \ python36 \ lib \ site-packages \ PyInstaller \ loader \ pyimod03_importers.py”,第714页行,load_module
module = loader.load_module(fullname)
ModuleNotFoundError:没有名为'PyQt5.sip'的模块
[18720]无法执行脚本qt_control_24
【解决】pyinstaller指令中加入: - hidden-import PyQt5.sip
【解决】在主程序中导入PyQt5.sip
程序中有Multiprocessing的引用
在打包成可执行程序后会创建进程失败。
【解决】(转自:dexterchen)
one-directory模式,只要再程序的最开始调用multiprocessing. freeze_support()就可以了
注意!!!!一定要写在
if __name__ == '__main__':
里,否则就会出现 can not get '模块' from 的错误
one-file模式,还需要使用下面修改后的Process和Pool。
(我的程序名叫upload)
报这个错误首先检查一下,不加-w是否出错,确定是-w起的幺蛾子,下一步
你是否用了popen执行windows指令?如果用了就按照下面修改
cmd_f = "ping -w 2 -n 1 " + SERVER_IP
info = subprocess.STARTUPINFO()
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
my_popen = subprocess.Popen(cmd_f,
stdin=subprocess.PIPE,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE,
startupinfo=info )
text_CreationDate = my_popen.stdout
text_CreationDate = text_CreationDate.read().decode("gbk")
win7旗舰版X64,运行exe报错
解决:打补丁
1.下载补丁: https://www.microsoft.com/zh-CN/download/details.aspx?id=5842
2.下载:vc_redist.x64.exe
3.或者在安装大补丁前可能需要下载安装:windows6.1-KB976932-X64.exe
详情:opencv源码安装3.4.1,python源码安装,pyinstaller3.3.1
报错:ImportError: OpenCV loader: missing configuration file: ['config.py']. Check OpenCV installation.
解决: pyinstaller -F main.py --paths='/usr/local/lib/python3.6/site-packages/cv2/python-3.6'
注意:不是必须这个文件夹,如果在你的python安装路径的site-packages里面有cv2也可以
解决:
1.代码有危险操作
import os
os.system(cmd)
2. ico换成标准尺寸[512, 256, 144, 140, 128, 120, 108, 100, 88, 72, 48, 32, 28],我用的72不报错了
参考:https://blog.csdn.net/clannad_niu/article/details/83819872
换成
import subprocess
subprocess.Popen(cmd, close_fds=True)
原因:
subprocess创建的是python的子进程,os.system独立进程