Windows10下PyVISA无法识别NI-VISA已检测的USB仪器求助
问题概述
作为PyVISA新手,尝试实现实验室设备自动化时遇到核心问题:NI-VISA向导可正常识别Thorlabs功率计,但运行以下代码时,list_resources()返回空元组:
import pyvisa rm = pyvisa.ResourceManager() rm.list_resources()
已排查位数匹配(64位Python搭配visa64.dll,通过.pyvisarc和代码指定路径)、pyvisa-py后端的PyUSB安装问题,但均未解决。附pyvisa-info关键信息:64位Python 3.12.3、PyVISA 1.14.1,ivi后端可识别NI的visa64/32.dll,py后端USB模块提示PyUSB未正确安装。
解决方案步骤
1. 强制指定NI-VISA后端路径
PyVISA可能默认选择后端时出现偏差,直接在代码中指定64位NI-VISA库路径,避免自动选择错误:
import pyvisa # 明确指向NI的64位VISA DLL rm = pyvisa.ResourceManager('C:\\Windows\\System32\\visa64.dll') print(rm.list_resources())
同时检查用户目录下的.pyvisarc配置文件,确保内容为:
paths: visa: C:\Windows\System32\visa64.dll
(Windows路径需用双反斜杠转义,或使用原始字符串格式)
2. 验证NI-VISA设备可用性
先排除NI-VISA本身的问题:
- 打开NI MAX(Measurement & Automation Explorer),在「Devices and Interfaces」的USB分类下找到目标功率计,右键查看「Properties」,记录设备的VISA资源名称(格式类似
USB0::0x1313::0x8078::xxxxxx::INSTR) - 打开设备的「VISA Test Panel」,发送
*IDN?命令,确认设备能正常返回标识信息,确保硬件连接和NI-VISA配置无问题
3. 修复PyUSB后端(若需使用pyvisa-py)
如果需要备用的pyvisa-py后端,解决PyUSB安装问题:
- 卸载现有PyUSB:
pip uninstall pyusb -y
- 重新安装PyUSB:
pip install pyusb
- 安装libusb-win32驱动:使用zadig工具为Thorlabs设备安装libusb-win32驱动(注意:仅当需要切换到pyvisa-py后端时操作,不要覆盖NI-VISA的原生驱动)
- 测试pyvisa-py后端:
import pyvisa rm = pyvisa.ResourceManager('@py') print(rm.list_resources())
4. 确认Python与NI-VISA位数完全匹配
- 打开NI MAX,通过「帮助」→「关于NI MAX」查看NI-VISA的位数(需为64位,与Python位数一致)
- 若NI-VISA仅安装了32位版本,需重新安装64位版本的NI-VISA
5. 重启相关服务与进程
- 打开Windows服务管理器(运行
services.msc),找到「NI-VISA Server」,右键选择「重启」 - 关闭并重新打开Python IDE/终端,确保配置变更生效
额外排查点
- 关闭Thorlabs自带的设备控制软件,避免设备被占用
- 更新PyVISA到最新版本,修复可能的版本兼容问题:
pip install --upgrade pyvisa
内容的提问来源于stack exchange,提问作者andy
相关产品推荐
相关产品推荐

