You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller打包EXE需指定参数运行,求无需手动的解决方案

PyInstaller打包Prophet项目时的FileNotFoundError解决方案

问题现象

运行PyInstaller打包生成的EXE文件时,出现以下错误:

Traceback (most recent call last):
File "main.py", line 7, in
File "", line 1360, in _find_and_load
File "", line 1331, in _find_and_load_unlocked
File "", line 935, in load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "prophet_init
.py", line 12, in
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\ERWIN\AppData\Local\Temp\_MEI188562\prophet\version.py'

已知通过命令python -m main.exe -Xfrozen_modules=off可正常运行程序,但不想使用批处理文件,修改spec文件、代码自动执行命令均无效。

有效解决方案

1. 修改Spec文件同时处理文件缺失与冻结模块问题

编辑PyInstaller生成的.spec文件,进行两处关键修改:

  • 添加__version__.py到datas列表,确保打包时包含该文件:
    datas=[('{你的prophet包路径}/__version__.py', 'prophet')],
    
    可通过pip show prophet查看Location字段,拼接prophet目录得到实际路径。
  • 在EXE配置段添加环境变量禁用冻结模块:
    EXE(
        pyz,
        a.scripts,
        a.binaries,
        a.datas,
        [],
        name='main',
        debug=False,
        bootloader_ignore_signals=False,
        strip=False,
        upx=True,
        upx_exclude=[],
        runtime_tmpdir=None,
        console=True,  # 根据项目需求调整为False
        env={'PYTHONFROZENMODULES': '0'}
    )
    
    修改完成后,重新执行打包命令:pyinstaller main.spec

2. 在代码中提前注入版本信息并禁用冻结模块

在main.py的最顶部添加以下代码,绕过prophet对__version__.py的依赖:

import sys

# 禁用冻结模块
sys.flags.frozen_modules = 0

# 手动设置prophet版本(替换为你实际安装的版本号)
PROPHET_VERSION = '1.1.5'

# 模拟__version__.py模块,提前注入到sys.modules
sys.modules['prophet.__version__'] = type('mock_version', (), {'__version__': PROPHET_VERSION})()

# 之后再导入prophet及其他依赖
import prophet

完成后重新执行打包:pyinstaller main.py

3. 打包命令直接添加参数禁用冻结模块并包含缺失文件

使用--exclude-module参数禁用冻结模块,同时用--add-data包含__version__.py:

# Windows系统
pyinstaller --exclude-module frozen_modules --add-data "{你的prophet包路径}/__version__.py;prophet" main.py

# Linux/macOS系统
pyinstaller --exclude-module frozen_modules --add-data "{你的prophet包路径}/__version__.py:prophet" main.py

内容的提问来源于stack exchange,提问作者Metaverse09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 21:05:02