首页 > 解决方案 > 运行可执行文件时,Pyinstaller 找不到 wcwidth “version.json”

问题描述

我正在尝试使用 sklearn、pandas、numpy 和 igraph 编译 python 脚本,但 Pyinstaller 可执行文件无法正确运行,因为它在 tmp 文件夹中找不到 version.json。

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Usuario\\AppData\\Local\\Temp\\_MEI106882\\wcwidth\\version.json'
[17248] Failed to execute script pyScript

标签: pythonpyinstaller

解决方案


您需要将wcwidth项目目录包含在数据中,因为它不被视为包或模块,而是数据文件。

在您的规范文件中:

...

import wcwidth


a = Analysis(['main.py'],
             pathex=[],
             binaries=[],
             datas=[
                 (os.path.dirname(wcwidth.__file__), 'wcwidth')                 
                 ],
...

注意:上面我使用os.path.dirname(wcwidth.__file__)动态获取的目录wcwidth,但这可以只是.venv/lib/site_packages/wcwidth或安装在哪里,这对我来说对 CI 至关重要。

或与--add-data

pyinstaller --add-data "/path/to/site_packages/wcwidth;wcwidth"

推荐阅读