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

时间:2014-10-22 21:45:43

标签: python django geoip

这似乎没有解决方法,我已经阅读了之前的错误,这个错误在5年前明显已经修复here。基本上我根据DjangoMaxMind中的文件完全正确地完成了所有事情。

我已经指定了我的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')< ---这很好用,请注意这个问题只适用于CITY db我猜

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我正在使用Django 1.5,我修复了下载和使用以下二进制文件的问题:

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