我收到了this code我希望在我的Windows 8.1操作系统上运行脚本 runCortexReader.py 。 Spyder给了我这个错误:
AttributeError:'module'对象没有属性'SO_REUSEPORT'
使用Ubuntu 14.04(使用双启动,而不是虚拟机)在同一台计算机上使用Spyder完全相同的代码
问题是,我真的想在Windows上运行该脚本,因为它以后应该与未安装在Ubuntu上的Matlab进行通信。
我在两个系统上都使用Python 2.7。
有人知道错误可能在哪里吗?
答案 0 :(得分:1)
SO_REUSEPORT
(以及SO_REUSEADDR
)是套接字相关设置。 Here是一个很好的解释,它们之间存在差异。
SO_REUSEPORT
仅出现在较新的Linux版本中 - 在 /usr/include/asm-generic/socket.h 中定义,通常值为15(#define SO_REUSEPORT 15
) :
/* To add :#define SO_REUSEPORT 15 */
)另一方面,在 Windows 上,Visual Studio的包含文件中没有定义此类宏(通常为Winsock2.h
)
同样setsockopt
official doc未在可能的选项名称中提及它。
为了让它在 Windows上运行,你必须做些什么(虽然这不是一个好方法),但是要注释掉(通过添加一个#
字符开始)所有引用它的行(我在以下文件中找到它,但它可能存在于其他文件中):
CortexDecoder.py 第244行:
self.cortexSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
或(这甚至更脏)在同一个文件中,导入socket
模块后,添加以下行:
socket.SO_REUSEPORT = socket.SO_REUSEADDR