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

树莓派下如何让PyInstaller识别并纳入系统级Python包?

解决PyInstaller无法找到系统级smbus库的问题

问题原因

通过sudo apt install安装的python3-smbus属于系统级Python库,默认存放在系统Python的dist-packages目录下。但激活虚拟环境后,PyInstaller的模块搜索路径仅包含虚拟环境的site-packages和基础Python路径,未覆盖系统级的dist-packages,因此无法定位到smbus。

解决方案

1. 定位系统级smbus的安装路径

执行以下命令找到smbus所在的系统目录:

find /usr/lib/python3* -name smbus.py

通常输出类似/usr/lib/python3.11/dist-packages/smbus.py,记下该文件的父目录(即/usr/lib/python3.11/dist-packages)。

2. 让PyInstaller纳入系统库路径

两种方式任选其一:

  • 方式一:临时设置PYTHONPATH环境变量
    在运行PyInstaller前,将系统dist-packages路径加入环境变量:
    PYTHONPATH=/usr/lib/python3.11/dist-packages pyinstaller --onefile nas_script.py
    
  • 方式二:使用PyInstaller的--paths参数
    直接在编译命令中指定路径:
    pyinstaller --onefile --paths=/usr/lib/python3.11/dist-packages nas_script.py
    

3. 验证编译结果

运行PyInstaller时,检查输出的Module search paths,确认系统dist-packages路径已被纳入。编译完成后,运行dist目录下的最终可执行文件(build目录为临时编译产物):

sudo ./dist/nas_script

额外说明

如果其他系统级依赖(如pyudev、netifaces)也出现找不到的问题,重复上述步骤即可,确保它们所在的系统路径被PyInstaller纳入搜索范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:20:56