Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeError:需要类似字节的对象,而不是';str';在python中的geolite2函数中_Python - Fatal编程技术网

TypeError:需要类似字节的对象,而不是';str';在python中的geolite2函数中

TypeError:需要类似字节的对象,而不是';str';在python中的geolite2函数中,python,Python,我有一个显示Ip地址所属国家的程序。它在python 2.7版中工作正常。问题是,当我在python 3.5版中尝试相同的程序时,它会抛出一个错误,如下所述: 代码: 错误: TypeError: a bytes-like object is required, not 'str' 如何解决错误 提前感谢我认为该库在Python3.x中不起作用 我查看了GitHub中的源代码;5年没有更新,它仍然使用python2.x构造(如xrange()in),在python3.x中不起作用(也许你很幸运

我有一个显示Ip地址所属国家的程序。它在python 2.7版中工作正常。问题是,当我在python 3.5版中尝试相同的程序时,它会抛出一个错误,如下所述:

代码:

错误:

TypeError: a bytes-like object is required, not 'str'
如何解决错误

提前感谢

我认为该库在
Python3.x
中不起作用

我查看了GitHub中的源代码;5年没有更新,它仍然使用
python2.x
构造(如
xrange()
in),在
python3.x
中不起作用(也许你很幸运,你的代码没有调用带有旧构造的部分代码,但我不会屏住呼吸)


看起来您必须自己克隆repo并使其适应
3.x
,或者寻找替代方案。

您需要使用python 3库:


pip安装python-geoip-python3

上面的答案是正确的,可以为python3安装正确的软件包。要强制安装Python3,请使用:

python3-mpip安装python-geoip-python3

但是,为了从GEOIP的全部功能中受益,您还可以考虑另外下载<强> GooLITe2,也可以将IP数据库传输到:

python3-mpip安装python-geoip-geolite2

要检查它是否适合您,请执行以下操作:

  • 以交互模式运行python3
  • 运行以下命令:
  • 你应该得到这样的东西

    <IPInfo ip='8.8.8.8' country='US' continent='NA' subdivisions=frozenset({'CA'}) ...
    

    “17.0.0.1”是一个字符串。您的错误消息表示函数需要字节:b'17.0.0.1'。str.encode(yourstring)Hello BoarGules,当我尝试时,它显示相同的错误..>>i=b'17.0.0.1'>>>类型(i)>>>匹配=geolite2.查找(i)输出:类型错误:需要一个类似字节的对象,而不是'str'。以下是一些指导原则。提供的答案可能是正确的,但可以从解释中获益。只有代码的答案不被认为是“好的”答案。我使用的是Python-geoip-python3,我仍然会遇到这个错误
    
    >>> from geoip import geolite2
    >>> geolite2.lookup('8.8.8.8')
    
    <IPInfo ip='8.8.8.8' country='US' continent='NA' subdivisions=frozenset({'CA'}) ...