Django: ImportError: cannot import name 'GeoIP2'

Django: ImportError: cannot import name 'GeoIP2'

我正在尝试根据 the instructions.

为 GeoDjango 设置 geoip2

出于某种原因,包装器未导入函数。它在我下载数据库并在我的设置中指向它们之前工作,但由于某种原因现在我无法加载 GeoIP2(即使我在 settings.py 中注释掉该行)。我应该如何解决这个问题?

Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import geoip2
>>>
>>> from django.contrib.gis.geoip2 import GeoIP2
Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: cannot import name 'GeoIP2'
>>>

编辑:我可以看到源文件中正确列出了 GeoIP2 函数(我没有修改过)。什么可能阻止它加载?

我是运行 Django 1.11.4

如果我导入 django.contrib.gis.geoip2 这是 __path__ 属性:

>>> geoip2.__path__
['C:\Users\Adam\Envs\otherlane\lib\site-packages\django\contrib\gis\geoip2']

This module 版本 1.9 后被弃用,取而代之的是支持 IPv6 和 GeoLite2 数据库格式的 django.contrib.gis.geoip2

如果您的 django < 1.9,请改用

from django.contrib.gis.geoip import GeoIP

仔细检查您的 GEOIP_PATH。我提醒您 Windows 需要反斜杠而不是正斜杠。

我通过 pip 包安装修复了 geoip2==2.9.0

pip install geoip2==2.9.0

我也遇到了同样的错误,多次尝试都无法解决。 由于它在我的一个系统上运行,我发现了一个不同之处,当您通过 pip 安装 geoip2 时,它还会安装 maxminddb。它正在运行的系统,maxminddb 版本是 1.5.4 而它不工作的系统是 maxminddb==2.0.0 所以最后我做到了 pip install maxminddb==1.5.4 并且有效

只需运行 命令 pip install geoip2 然后它就可以正常工作...