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

2 投票
2 回答
1779 浏览
提问于 2025-04-29 03:25

这个问题看起来没有解决办法,我查了一下之前的一个bug,听说五年前已经修复过了,具体可以在这里找到。基本上,我按照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命令行里做个简单的测试,使用的是:

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

g.country('google.com') <--- 这个可以正常工作,注意这个问题我想是只出现在CITY数据库上。

我通过apt安装了GeoIP C库,使用的命令是apt-get install libgeoip-dev,结果给我安装了一个旧版本1.6.0-1,而最新版本是1.6.2-1。我的Django版本也是1.6.1。

暂无标签

2 个回答

0

我之前在用Django 1.5的时候遇到了一个问题,后来我通过下载并使用一些二进制文件来解决了这个问题,下载地址是:

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

0

结果显示,需要使用Django 1.6.5版本。

请确保你从1.6.1版本升级到1.6.5,方法是运行命令:pip install django==1.6.5

撰写回答