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

使用PyInstaller打包含backtesting.py模块的程序时出错求助

问题:PyInstaller打包含backtesting.py的Python程序为EXE后无法运行

环境与现象

Windows 11系统下开发Python程序,使用backtesting.py模块,在VS Code或控制台运行正常,但用PyInstaller打包成EXE后无法运行。即使精简代码为以下两行,EXE仍无法工作:

import backtesting
print("Hello")

PyInstaller打包时的警告

115289 WARNING: Library user32 required via ctypes not found
115301 WARNING: Library msvcrt required via ctypes not found 

运行EXE时的错误

C:\Users\menb\Documents\tests\test3\test3>test3
Traceback (most recent call last):
  File "test3.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
  File "backtesting\__init__.py", line 60, in <module>
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
  File "backtesting\backtesting.py", line 32, in <module>
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
  File "backtesting\_plotting.py", line 43, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\menb\\Documents\\tests\\test3\\test3\\backtesting\\autoscale_cb.js'
[33336] Failed to execute script 'test3' due to unhandled exception!

解决步骤

1. 修复静态资源缺失问题

错误提示找不到autoscale_cb.js,这是backtesting模块自带的静态资源文件,PyInstaller默认不会自动打包这类非Python文件。操作如下:

  • 找到Python环境中backtesting模块的安装路径(比如Lib\site-packages\backtesting),确认里面包含autoscale_cb.js、相关CSS等静态文件。
  • 使用PyInstaller的--add-data参数打包这些资源,Windows下命令格式:
    pyinstaller --add-data "你的site-packages路径\backtesting\*.js;backtesting" --add-data "你的site-packages路径\backtesting\*.css;backtesting" test3.py
    
    注意替换实际路径,Windows用分号;分隔源路径和目标路径,其他系统用冒号:。

2. 处理ctypes依赖库警告

user32和msvcrt是Windows系统自带库,一般无需额外打包,但可通过以下方式消除警告:

  • 打包命令中添加--hidden-import ctypes,确保PyInstaller识别ctypes依赖:
    pyinstaller --add-data "你的site-packages路径\backtesting\*.js;backtesting" --add-data "你的site-packages路径\backtesting\*.css;backtesting" --hidden-import ctypes test3.py
    

3. 验证打包结果

打包完成后,进入生成的dist目录运行EXE,确认是否正常输出Hello且无报错。若还有其他资源缺失,重复步骤1用--add-data加入对应文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:43:32