编译后的Python脚本读写Apache Feather文件失败求助
解决pyarrow.vendored.version模块缺失的编译问题
方案1:显式指定打包缺失模块
不管用pyinstaller还是auto-py-to-exe,都可以通过添加--hidden-import参数强制打包缺失的模块:
- 命令行使用pyinstaller时,执行:
pyinstaller --hidden-import pyarrow.vendored.version your_script.py - 使用auto-py-to-exe时,在「Hidden Imports」输入框中添加
pyarrow.vendored.version,再重新编译。
方案2:降级pyarrow版本
部分高版本pyarrow的vendored模块结构在打包工具中存在识别问题,可尝试降级到较稳定的版本,比如pyarrow==12.0.0:
pip install pyarrow==12.0.0 --force-reinstall
重新安装后再编译脚本,大概率能解决模块找不到的问题。
方案3:修改pyarrow的版本检测代码(临时 workaround)
找到Python环境下的pyarrow/__init__.py文件,定位到引用pyarrow.vendored.version的代码段,替换为直接读取版本信息的方式:
比如原代码可能是:
from pyarrow.vendored.version import Version
替换为:
import importlib.metadata Version = type('Version', (), {'__init__': lambda self, v: setattr(self, 'v', v)}) __version__ = importlib.metadata.version('pyarrow')
修改后保存,再重新编译exe。
内容的提问来源于stack exchange,提问作者dqu
相关产品推荐
相关产品推荐

