到目前为止,我尝试使用吡坦,但遵循手册:
import stun
nat_type, external_ip, external_port = stun.get_ip_info()产量:
>>> import stun
>>> nat_type, external_ip, external_port = stun.get_ip_info()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.6/dist-packages/stun/__init__.py", line 253, in get_ip_info
stun_host=stun_host, stun_port=stun_port)
File "/usr/local/lib/python3.6/dist-packages/stun/__init__.py", line 186, in get_nat_type
_initialize()
File "/usr/local/lib/python3.6/dist-packages/stun/__init__.py", line 93, in _initialize
dictValToAttr.update({items[i][1]: items[i][0]})
TypeError: 'dict_items' object does not support indexing看起来存储库已经不再维护了。我发现[医]止痛剂非常快地获取IP地址,不幸的是它没有提供NAT类型的信息。
有效地检索两者的替代方法是什么?
发布于 2018-09-18 15:14:59
这可能是python版本的一个问题,pystun的原始代码使用2.x,而您使用3.x。
查看产生错误的源代码行,我们可以看到它调用字典.items()方法并尝试按位置访问其成员。
以下是问题所在:
python 2.x中,dict.items()返回一个元组列表。python 3.x中,dict.items()返回一个不能按位置访问的视图,只能迭代一次。简短的回答:您不能在pystun回购中使用python 3.x;也许可以进行一些修补,或者您可以自己复制和修改源代码,而不是依赖外部回购。
https://stackoverflow.com/questions/52389350
复制相似问题