我正在尝试在 Python 2 应用程序中启用 IPv6,但遇到了麻烦。每当我尝试绑定到 IPv6 套接字时,socket.error: getsockaddrarg: bad family
都会引发异常。我可以通过执行以下操作来重现错误:
import socket
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
s.bind(('', 12345))
如果我在 Python 3 中运行,此代码可以正常工作。不幸的是,该脚本需要大量的移植工作才能在 Python 3 中工作,我宁愿不必这样做。
我需要做些什么才能让 IPv6 在 Python 2 中工作还是我是 SOL?
详细信息:Linux2 上的 Python 2.6.2 (r262:71600, Oct 24 2009, 03:16:31) [GCC 4.4.1 [gcc-4_4-branch revision 150839]](它是标准 openSUSE 11.2 安装的一部分的 Python )。
更新
在 AndiDog 帮助我弄清楚即使未配置 IPv6 时也定义了 socket.AF_INET6 之后,我发现socket.has_ipv6
. 这被定义为布尔值,并指示 Python 是否使用 IPv6 构建。