python - 运行可执行文件时,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
解决方案
您需要将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"
推荐阅读
- python - 为什么 venv 包含旧版本的 pip (9.0.3)?
- azure - 使用 Azure CLI 为应用程序见解设置数据保留
- c# - DynamoDB 查询包含一个列表参数
- reactjs - 无法使用 @testing-library/user-event 用新值更新文本区域
- xamarin - Xamarin Forms 不能两次安装相同的应用程序(使用不同的包名称)
- excel - 下载一个特定股票的历史股票价格时 VBA 宏出错:MDB
- angular - 使用 Angular 9 Reactive Forms 为一个输入使用多种模式的方法
- google-cloud-platform - 如何在谷歌云 sdk 中使用谷歌云 Gcloud 查询一次查询多个项目
- android - AndroidX Navigation 在 BottomNavigationView 上显示新的 NavigationGraph
- c++ - 在 c++20 中使用模块