PyInstaller打包的Python可执行文件本地正常,同事Win11机器无法运行
问题:PyInstaller打包的EXE在本地Win11正常,同事Win11无法运行
脚本依赖库
import pandas as pd import xlwings as xw import win32com.client from xlwings.utils import rgb_to_int from xlwings.constants import LookAt import warnings warnings.filterwarnings('ignore') from pandasql import sqldf import sqlalchemy as sa import urllib import pyodbc
打包参数与日志
打包命令
.\pyinstaller --hidden-import pysqlite2 --hidden-import MySQLdb --hidden-import psycopg2 -F 'Script.py'
打包日志
PS C:\Users\USER\PycharmProjects\pythonProject.venv\Scripts> .\pyinstaller --hidden-import pysqlite2 --hidden-import MySQLdb --hidden-import psycopg2 -F 'Script.py' 554 INFO: PyInstaller: 6.8.0, contrib hooks: 2024.7 554 INFO: Python: 3.12.2 586 INFO: Platform: Windows-11-10.0.22621-SP0 601 INFO: Python environment: C:\Users\USER\PycharmProjects\pythonProject.venv 601 INFO: wrote C:\Users\USER\PycharmProjects\pythonProject.venv\Scripts\Script.spec 617 INFO: Module search paths (PYTHONPATH): ['C:\Users\USER\PycharmProjects\pythonProject\.venv\Scripts\pyinstaller.exe', 'C:\Program Files\Python312\python312.zip', 'C:\Program Files\Python312\DLLs', 'C:\Program Files\Python312\Lib', 'C:\Program Files\Python312', 'C:\Users\USER\PycharmProjects\pythonProject\.venv', 'C:\Users\USER\PycharmProjects\pythonProject\.venv\Lib\site-packages', 'C:\Users\USER\PycharmProjects\pythonProject\.venv\Lib\site-packages\win32', 'C:\Users\USER\PycharmProjects\pythonProject\.venv\Lib\site-packages\win32\lib', 'C:\Users\USER\PycharmProjects\pythonProject\.venv\Lib\site-packages\Pythonwin', 'C:\Users\USER\PycharmProjects\pythonProject\.venv\Scripts'] 1092 INFO: checking Analysis 1214 INFO: checking PYZ 1328 INFO: checking PKG 1328 INFO: Building because toc changed 1328 INFO: Building PKG (CArchive) Script.pkg 19102 INFO: Building PKG (CArchive) Script.pkg completed successfully. 19102 INFO: Bootloader C:\Users\USER\PycharmProjects\pythonProject.venv\Lib\site-packages\PyInstaller\bootloader\Windows-64bit-intel\run.exe 19102 INFO: checking EXE 19117 INFO: Building because name changed 19117 INFO: Building EXE from EXE-00.toc 19133 INFO: Copying bootloader EXE to C:\Users\USER\PycharmProjects\pythonProject.venv\Scripts\dist\Script.exe 19288 INFO: Copying icon to EXE 19356 INFO: Copying 0 resources to EXE 19356 INFO: Embedding manifest in EXE 19438 INFO: Appending PKG archive to EXE 19482 INFO: Fixing EXE headers 27485 INFO: Building EXE from EXE-00.toc completed successfully. PS C:\Users\USER\PycharmProjects\pythonProject.venv\Scripts>
排查与解决步骤
1. 捕获具体错误信息
让同事打开命令提示符(CMD),切换到EXE所在目录,直接运行Script.exe,终端会输出闪退的具体原因(比如缺失依赖、路径错误、权限不足),这是定位问题的核心步骤。
2. 补全依赖库的打包配置
针对脚本用到的Windows交互类库,补充PyInstaller的隐藏导入:
- 重新打包时添加以下参数:
pyinstaller --clean --hidden-import pysqlite2 --hidden-import MySQLdb --hidden-import psycopg2 --hidden-import xlwings._xlwindows --hidden-import win32com.client.gencache --hidden-import pyodbc -F Script.py - 或修改生成的
Script.spec文件,在hiddenimports列表中补充上述库名,再用pyinstaller Script.spec重新打包。
3. 检查ODBC驱动与系统运行库
- 如果报错涉及ODBC连接失败,确认同事机器安装了对应数据库的ODBC驱动(比如SQL Server Native Client、MySQL ODBC驱动),且驱动位数与你的系统一致(均为64位)。
- 如果提示缺失
vcruntime140.dll等系统DLL,让同事安装Visual C++ Redistributable 2022(适配Python 3.12的版本)。
4. 修正共享路径问题
- 把脚本中硬编码的映射盘符(如
Z:\file.xlsx)替换为UNC路径(如\\server\share\file.xlsx),避免不同机器盘符映射不一致的问题。 - 让同事手动访问该UNC路径,确认能正常打开Excel文件且具备读写权限。
5. 尝试非单文件打包模式
去掉-F参数,打包为目录模式:
pyinstaller --clean --hidden-import pysqlite2 --hidden-import MySQLdb --hidden-import psycopg2 --hidden-import xlwings._xlwindows --hidden-import win32com.client.gencache Script.py
将整个打包后的文件夹发给同事运行,单文件模式的临时解压机制可能引发权限或文件缺失问题,目录模式更稳定。
内容的提问来源于stack exchange,提问作者Nick Nazarian
相关产品推荐
相关产品推荐

