目录
前言
最近使用pycharm制作了Qt5界面,之前一直没使用python制作界面,算是查查鲜,熟悉一下流程。在最后打包成exe时,遇到些问题,之前的开发都是单个py文件生成的exe,一直很顺利,而这次,按模块写的py文件,最终有多个py文件,这种类型的打包还是第一次,生成的exe也总是报错No module named “xxx”。各种资料查询后还算是解决了问题。
将pycharm的环境切换到虚拟环境
查看链接:
链接: 让Pycharm的Terminal进入创建好的虚拟环境
下载虚拟环境缺少的库
在pycharm中下载当前项目(虚拟环境中)python解释器缺失的库,我的项目pyinstaller库之前使用的为本地的pyinstaller库,
在我的pycharm中当前项目(虚拟环境中)的python解释器版本为3.6,下载pyinstaller库为3.6版本即可。
设置File–Settings–External Tools
External Tools1配置参数设置:
按以下参数设置
Name:pyinstaller
Program:
当前项目路径\Scripts\pyinstaller.exe
Arguments:
-F -i logo.ico -w D:\python\workspace_pycharm\pythonenv\Rte\main.py -p D:\python\workspace_pycharm\pythonenv\Rte\subpy_1.py ... -p D:\python\workspace_pycharm\pythonenv\Rte\subpy_n.py
Working directory:
当前项目路径
说明:
Arguments: -w后加主py文件的完整路径,-p后加所有的子py文件的完整路径。
配置截图:
External Tools2配置参数设置:
按以下参数设置
Name:pyinstaller-spec
Program:
当前项目路径\Scripts\pyinstaller.exe
Arguments:
--clean main.spec
Working directory:
当前项目路径
说明:
无
配置截图:
运行External Tools1
这一步会生成一个main.spec文件,查看其内容,可以看到Analysis第一项为主py文件,pathex填充所有的子py文件。
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['D:\\python\\workspace_pycharm\\pythonenv\\Rte\\main.py'],
pathex=['D:\\python\\workspace_pycharm\\pythonenv\\Rte\\AddDemEvents.py', 'D:\\python\\workspace_pycharm\\pythonenv\\Rte\\AdjustFolder_of_NewProproject.py', 'D:\\python\\workspace_pycharm\\pythonenv\\Rte\\AdjustFolder_of_NewProproject2.py', 'D:\\python\\workspace_pycharm\\pythonenv\\Rte\\ARElementsGeneration_YY.py', 'D:\\python\\workspace_pycharm\\pythonenv\\Rte\\AssemblyConnect.py', 'D:\\python\\workspace_pycharm\\pythonenv\\Rte\\ConvertArxml.py', 'D:\\python\\workspace_pycharm\\pythonenv\\Rte\\DataMapping.py', 'D:\\python\\workspace_pycharm\\pythonenv\\Rte\\resource.py', 'D:\\python\\workspace_pycharm\\pythonenv\\Rte'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False , icon='logo.ico')
运行External Tools2
生成三个文件夹:pycache,build,dist
可执行文件在dist文件夹中,运行main.exe可以正常运行。
总结
要解决生成的exe报错No module named "xxx"要注意以下几点:
1.pycharm的当前项目要切换到虚拟环境。
2.所有的库都在虚拟环境中(项目路径\Lib\site-packages)。