GeoIP + Django,无效的 GeoIP 城市数据文件

Posted

技术标签:

【中文标题】GeoIP + Django,无效的 GeoIP 城市数据文件【英文标题】:GeoIP + Django, Invalid GeoIP city data file 【发布时间】:2014-10-22 21:45:43 【问题描述】:

这似乎没有修复,我已经阅读了上一个错误,该错误显然是在 5 年前修复的 here。基本上我已经根据Django 和MaxMind 中的文档完全正确地完成了所有工作。

我已经指定了我的GEOIP_PATH,甚至尝试使用GEOIP_CITY 指定文件,但我仍然得到相同的回溯:

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 112, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/django/backend/apps/api/routes.py", line 98, in jsonp_wrapper
    resp = f(request, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/django/views/decorators/csrf.py", line 57, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/django/backend/apps/api/routes.py", line 205, in userLogin
    userProfile.updateLocation(request)
  File "/home/django/backend/apps/agents/models.py", line 89, in updateLocation
    location = locationFromRequest(request)
  File "/home/django/backend/apps/agents/models.py", line 29, in locationFromRequest
    return g.city(ip)
  File "/usr/lib/python2.7/dist-packages/django/contrib/gis/geoip/base.py", line 159, in city
    enc_query = self._check_query(query, city=True)
  File "/usr/lib/python2.7/dist-packages/django/contrib/gis/geoip/base.py", line 148, in _check_query
    raise GeoIPException('Invalid GeoIP city data file: %s' % self._city_file)
GeoIPException: Invalid GeoIP city data file

我只是在 python shell 中做一个简单的测试来测试使用:

from django.contrib.gis.geoip import GeoIP
g = GeoIP()
g.city('google.com')

g.country('google.com')

我确实使用 apt-get install libgeoip-dev 从 apt 安装了 GeoIP C 库,当最新版本是 1.6.2-1 时,它显然给了我一个旧版本 1.6.0-1。我的 Django 版本也是 1.6.1。

【问题讨论】:

【参考方案1】:

事实证明,Django 1.6.5 是必需的。

确保从 1.6.1 升级,pip install django==1.6.5

【讨论】:

【参考方案2】:

我使用的是 Django 1.5,我解决了从以下位置下载和使用二进制文件的问题:

http://dev.maxmind.com/geoip/legacy/geolite/

【讨论】:

以上是关于GeoIP + Django,无效的 GeoIP 城市数据文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中为 GeoIP2 创建项目设置

Django 无法检测到来自 nginx 的 GeoIP 数据

Django GeoIP 导入 [重复]

如何在 OS X 中为 Django 正确设置 GEOIP_PATH?

带有 uWSGI 的 Django 中 Geoip2() 上的“[Errno 12] 无法分配内存”

如何在 Django 上使用 GeoIP 在 ASN 中查询已知 IP 地址?