cx_Freeze打包含pyvisa的Python脚本后找不到VISA实现如何解决
解决cx_Freeze打包pyvisa程序报错问题
- 补全打包依赖
pyvisa-py属于pyvisa的动态加载后端,cx_Freeze默认不会自动识别打包,需要手动在setup.py的packages配置中添加相关依赖,修改后的buildOptions配置参考如下:
buildOptions = dict( packages = ['matplotlib.backends.backend_tkagg','matplotlib.figure', 'tkinter','numpy','pyvisa','pyvisa_py','serial','usb'], includes = [], include_files = [], excludes = [] )
注:time属于Python标准库,无需手动加入packages列表。
- 显式指定VISA后端
修改pyvisa初始化代码,强制指定使用pyvisa-py后端,避免运行时自动查找实现失败,将原来的rm = visa.ResourceManager()替换为:
rm = visa.ResourceManager('@py')
- 配置Linux设备访问权限
Ubuntu系统下访问串口/USB类硬件需要对应权限,执行如下命令将当前用户加入设备访问用户组,执行后重启系统或重新登录生效:sudo usermod -aG dialout $USER
修改完成后重新执行打包命令即可。
内容的提问来源于stack exchange,提问作者Yan Araújo
相关产品推荐
相关产品推荐

