每当我尝试运行pyroute2模块的示例脚本时:
from pyroute2 import IPRoute
ip = IPRoute()
print([x.get_attr('IFLA_IFNAME') for x in ip.get_links()])
我收到以下错误:
Traceback (most recent call last):
File "ex.py", line 2, in <module>
ip = IPRoute()
File "C:\Python35\lib\site-packages\pyroute2\__init__.py", line 122, in __new_
_
cls.register(cls.registry['class'])
File "C:\Python35\lib\site-packages\pyroute2\__init__.py", line 102, in __geti
tem__
[name], 0)
File "C:\Python35\lib\site-packages\pyroute2\iproute.py", line 175, in <module
>
from socket import AF_BRIDGE
ImportError: cannot import name 'AF_BRIDGE'
我正在尝试使用pyroute2的主要平台是OpenBSD,但问题仍然存在于windows等其他平台上。
除了python3.4之外,我还在python3.5和python2.7周围进行了测试。
只是不知道如何解决这个问题。 任何想法?
感谢
答案 0 :(得分:2)
首先,来自官方pyroute2 git repository:
Pyroute2是一个纯Python的netlink和Linux网络配置库。它只需要Python stdlib,没有第三方库。稍后它可以改变,但deps树将保持尽可能简单。
因此,OpenBSD和Windows不是Linux系统。 OpenBSD不支持AF_BRIDGE
,仅在Linux kernel支持。如果要执行脚本,则需要:
AF_BRIDGE
(我认为这不会被社区接受)。关于替代方案,如果您只需要检查您的路线表,您可以找到以下的好选择: