gpt4 book ai didi

Python 代码在交互式提示符下运行,但不是作为脚本运行

转载 作者:太空宇宙 更新时间:2023-11-03 15:39:45 25 4
gpt4 key购买 nike

我正在尝试使用seabreeze ( seabreeze ) 和 pyseabreeze ( pyseabreeze ) 与海洋光学光谱仪连接。

如果我在Windows中从命令提示符(cmd)输入python并逐行输入以下代码,它就可以工作。但是,如果我将其放入脚本 (spec_test.py) 中并尝试使用“python spec_test.py”从 cmd.exe 运行它,它将无法工作。

我已经搜索了很多类似的问题,但似乎没有一个能涵盖我遇到的问题。我运行的是 Windows 7 64 位,使用 anaconda 安装了 python 3.5.2。我还必须安装 pyusb 和 libusb 才能使用 pyseabreeze。

代码:

import seabreeze
seabreeze.use('pyseabreeze')
import seabreeze.spectrometers as sb

devs = sb.list_devices()
print(devs)
spec = sb.Spectrometer(devs[0])
print(spec.model)

以及我收到的错误消息:

[<SeaBreezeDevice USB2000PLUS:FLMS02379>]
Traceback (most recent call last):
File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\seabreeze\pyseabreeze\interfaces\common.py", line 14, in decorated_func
return func(*args, **kwargs)
File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\seabreeze\pyseabreeze\interfaces\spectrometer.py", line 46, in open
self.open_device(device.handle)
File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\seabreeze\pyseabreeze\interfaces\communication.py", line 37, in open_device
device.set_configuration()
File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\usb\core.py", line 869, in set_configuration
self._ctx.managed_set_configuration(self, configuration)
File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\usb\core.py", line 102, in wrapper
return f(self, *args, **kwargs)
File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\usb\core.py", line 148, in managed_set_configuration
self.backend.set_configuration(self.handle, cfg.bConfigurationValue)
File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\usb\backend\libusb0.py", line 493, in set_configuration
_check(_lib.usb_set_configuration(dev_handle, config_value))
File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\usb\backend\libusb0.py", line 431, in _check
raise USBError(errmsg, ret)
usb.core.USBError: [Errno None] b'libusb0-dll:err [set_configuration] could not set config 1: win error: The parameter is incorrect.\r\n'
Traceback (most recent call last):

File "<ipython-input-9-ead886eb3666>", line 1, in <module>
runfile('C:/Users/Raman Lab/Python code/Spectrometers/spec_testing.py', wdir='C:/Users/Raman Lab/Python code/Spectrometers')

File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)

File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/Raman Lab/Python code/Spectrometers/spec_testing.py", line 7, in <module>
spec = sb.Spectrometer(devs[0])

File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\seabreeze\spectrometers.py", line 62, in __init__
self._open_device(device)

File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\seabreeze\spectrometers.py", line 90, in _open_device
lib.device_open(self._dev)

File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\seabreeze\pyseabreeze\wrapper.py", line 81, in device_open
return device.interface.open(device)

File "C:\Users\Raman Lab\AppData\Local\Continuum\Anaconda3\lib\site-packages\seabreeze\pyseabreeze\interfaces\common.py", line 23, in decorated_func
raise SeaBreezeError(msg)

SeaBreezeError: An error occured during opening.

感谢您的帮助!

编辑:出于某种原因,我发现了这一点,认为这可能有助于描述问题。如果我从 cmd.exe 输入交互式 python 并粘贴代码而不是手动输入,我会收到相同的错误。这让我认为(很可能我错了)它在某种程度上与导入速度有关。我尝试在第 3 行和第 5 行之间添加几秒钟的 sleep ,以模拟输入提示时发生的情况,但这没有帮助。我希望这足够描述性。

最佳答案

你最初的猜测并不遥远。然而,我在 Windows 7 32 位和 Python 2.7 上遇到了完全相同的问题。 gchaks 链接的示例代码运行良好。当我尝试快速连续多次执行该脚本时,错误消息发生了变化并指向一个空的设备列表。我添加了2秒的延迟

devs = sb.list_devices()

这解决了问题。顺便说一句,你的代码在 Linux 机器上运行得很好。

另一个提示:如果您的代码应该运行一次,但随后遇到另一条错误消息,请确保关闭设备连接或断开并重新连接光谱仪。

关于Python 代码在交互式提示符下运行,但不是作为脚本运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42261002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com