EC2服务器中的Python Geoip2 maxminddb.reader错误

Posted

技术标签:

【中文标题】EC2服务器中的Python Geoip2 maxminddb.reader错误【英文标题】:Python Geoip2 maxminddb.reader error in EC2 server 【发布时间】:2020-09-11 11:19:12 【问题描述】:

您好,我遇到以下代码的问题。

PS:它在我的本地机器上运行良好,但在服务器中遇到问题。

import geoip2.database

def get_geo_city_from_ip(ip="103.148.20.109"):

    try:
        reader = geoip2.database.Reader('GeoLite2-City.mmdb')
        response = reader.city(ip)
        city=response.city.name
        reader.close()
        return city
    except Exception as e:
        return None
a = get_geo_city_from_ip()
print("City ####",a)

错误

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    import geoip2.database
  File "/var/www/html/geo/test/lib/python3.5/site-packages/geoip2/database.py", line 10, in <module>
    import maxminddb
  File "/var/www/html/geo/test/lib/python3.5/site-packages/maxminddb/__init__.py", line 5, in <module>
    import maxminddb.reader
  File "/var/www/html/geo/test/lib/python3.5/site-packages/maxminddb/reader.py", line 36
    _buffer: Union[bytes, FileBuffer, "mmap.mmap"]
           ^
SyntaxError: invalid syntax

软件包和版本 Python 3.5.2 aiohttp==3.6.2 异步超时==3.0.1 attrs==20.2.0 证书==2020.6.20 chardet==3.0.4 geoip2==4.0.2 idna==2.10 idna-ssl==1.1.0 maxminddb==2.0.2 multidict==4.7.6 pkg-资源==0.0.0 请求==2.24.0 simplegeoip2==1.0.2 打字扩展==3.7.4.3 urllib3==1.25.10 yarl==1.5.1

【问题讨论】:

Python 3.6 or greater is required. Older versions are not supported. 【参考方案1】:

你在本地机器上使用 python 3.7+ 吗?

python 3.5 中不支持注解 var 类型。

喜欢错误排除信息。

 _buffer: Union[bytes, FileBuffer, "mmap.mmap"]

在你的ec2服务器中使用python 3.7+,一切正常。

【讨论】:

我已经将这个 geoip2 与 python 2.7 一起使用。那个时候我没有遇到任何问题 我无法修改服务器中的 Python 版本。是否可以将 geoip2 与 Python 3.5.2 一起使用【参考方案2】:

我更改后它的工作 geoip2==2.9.0 maxminddb==1.4.1

【讨论】:

以上是关于EC2服务器中的Python Geoip2 maxminddb.reader错误的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2实例(生产)中的PostGres超时错误

安装 GeoIP2 时出错:geoip2/geoip2 v2.3.1 需要 maxmind/web-service-common

aws ec2 - 用bash命令运行python uwsgi继续返回 - 找不到python应用程序

无法在 AWS 上的 EC2 与 Python 中的 SSHTunnelForwarder 之间进行连接

使用 maxmind geoip2 呼出城市名称

如何使用 GeoIP2() django 模型从 IP 地址调用中提取保存的信息以显示在我的 html 中