Django GeoIP Module not found; can't remedy

207 views
Skip to first unread message

DF

unread,
May 24, 2012, 7:10:50 PM5/24/12
to django...@googlegroups.com

I've spent several hours attempting to resolve my problems setting up GeoIP in Django to no avail and was hoping to get some guidance on what the problem(s) might be.

I'm working on an existing Django application that required some geolocation abilities, specifically getting a users IP and lat/long and then placing that info on a map marker. GeoIP and the associated libraries appeared to be the best solution for the first step.

I installed GeoIP on a Mac using Homebrew. I then manually created a folder in the root directory of my project with the GeoIPv6.data and GeoLiteCity.dat files. After this, I added the path in my settings file:

import os

DEBUG = True

TEMPLATE_DEBUG = DEBUG

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

GEOIP_PATH = os.path.join(BASE_DIR, 'geoip'),

I then opened a command shell for the project and received the following error:

>>> from django.contrib.gis.geoip import GeoIP

Traceback (most recent call last):

  File "<console>", line 1, in <module>

ImportError: No module named geoip

I can't seem to remedy this problem. One issue that may be the cause is extracting the two dat.gz files was an issue. Neither could be unzipped from the command line – neither are .zip files – and had to use Stuffit Expander to open these. The resulting dat files in my project IDE (pyCharm) have a VLC (?) icon on each. Perhaps this is part of the issue (finding a way to uncompress the file was a challenge in itself). I'm not sure as the module was not even found.

Any help would be extremely appreciated in resolving this issue as I can't progress any further without figuring out what's wrong.

Many thanks.

DF

unread,
May 24, 2012, 8:00:51 PM5/24/12
to django...@googlegroups.com
It appeared an import statement error caused the initial problem. But once that was fixed, the following error results:

">>> from django.contrib.gis.utils.geoip import GeoIP
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/gis/utils/geoip.py", line 68, in <module>
    lgeoip = CDLL(lib_path)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(/usr/local/lib/libGeoIP.dylib, 6): no suitable image found.  Did find:
        /usr/local/lib/libGeoIP.dylib: mach-o, but wrong architecture"

Anyone have a clue on how to remedy this?

Thomas Lockhart

unread,
May 28, 2012, 3:47:00 PM5/28/12
to django...@googlegroups.com, DF
...
> File
> "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py",
> line 353, in __init__
> self._handle = _dlopen(self._name, mode)
> OSError: dlopen(/usr/local/lib/libGeoIP.dylib, 6): no suitable image
> found. Did find:
> /usr/local/lib/libGeoIP.dylib: mach-o, but wrong architecture"
>
I've been using macports and virtualenv so have not run into this
(pretty much everything gets built and installed in /usr/local,
including a new build of python itself).

But you are using Apple's python and a homebrew build of GeoIP and
python is clearly complaining that you do not have a compatible build of
the library.

Use the "file" command to examine the python installation and your
libGeoIP library (example from my system; yours has some different paths):

$ otool -L /usr/lib/python2.7
/System/Library/Frameworks/Python.framework/Versions/2.7/Python
(compatibility version 2.7.0, current version 2.7.1)
...
$ file /System/Library/Frameworks/Python.framework/Versions/2.7/Python
/System/Library/Frameworks/Python.framework/Versions/2.7/Python: Mach-O
universal binary with 2 architectures
/System/Library/Frameworks/Python.framework/Versions/2.7/Python (for
architecture x86_64): Mach-O 64-bit dynamically linked shared
library x86_64
/System/Library/Frameworks/Python.framework/Versions/2.7/Python (for
architecture i386): Mach-O dynamically linked shared library i386

I would include the geoip library in my example but it is having trouble
building from MacPorts. Am looking into that :/

hth

- Tom
Reply all
Reply to author
Forward
0 new messages