【虚拟环境下多py文件pyinstaller打包总结,exe运行报错No module named “xxx“】

前言

最近使用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文件的完整路径。
配置截图: Alt

External Tools2配置参数设置:

按以下参数设置
Name:pyinstaller-spec
Program:
当前项目路径\Scripts\pyinstaller.exe
Arguments:
--clean main.spec
Working directory:
当前项目路径

说明:

配置截图: Alt

运行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)。

  • 37
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值