web-dev-qa-db-ja.com

Mac OS XのソースコードからGeoIPをインストールする方法はありますか?

MaxMind GeoIP Cライブラリ をインストールして、 Djangoの一部としてのGeoIP を使用できるようにします。私はMacOSXに取り組んでいます。

here からGeoIP-1.4.8.tar.gzをダウンロードして、次を実行しました。

./configure
make
make check
make install

問題なく。また、GeoIP.dat.gzGeoLiteCity.dat.gzをダウンロードし、解凍してローカルディレクトリに配置しました。

次に、settings.pyに次のパスを設定しました。

GEOIP_PATH = 'path_to_dat_files'
GEOIP_LIBRARY_PATH = 'path_to_c_files'

python manage.py migrate(使用しているプロジェクトのGeoIPへの参照があります)を実行しようとしていますが、それでも次のエラーが発生します。

from Django.contrib.gis.utils import GeoIP
ImportError: cannot import name GeoIP

何か案は?

1
Richard

同じ手順を実行しただけで、何も問題は見つかりませんでした

./configure
make
make check
make install

そして、geo解凍されたデータベースをDjangoプロジェクトのルートディレクトリに置き、settings.pyに以下を追加します。

GEOIP_PATH = "./"

これが私が実行して得たものです:

% python manage.py Shell
>>> from Django.contrib.gis.utils import GeoIP
>>> g = GeoIP()
>>> g.country('google.com')
{'country_name': 'United States', 'country_code': 'US'}
>>>>
2
clsung

この時点で、この質問は約4歳以上であることに気付きましたが、Mac OS X 10.7(Lion)、Mac OS X 10.8(Mountain Lion)などの最新バージョンのMac OSXのユーザーがどのように使用しているかについてさらに詳しく説明したいと思います。およびMacOS X 10.9(Mavericks)-自分のマシンにGeoIPをインストールできます。これはMacOS X 10.9.5まで私がテストしましたが、Mac OS X 10.10(Yosemite)でもまったく同じ手順でうまくいくはずです。

Python/Djangoの統合に関する限り、GeoIPバイナリ(および関連するデータベース)がシステム全体に適切にインストールされていれば、GEOIP_PATHまたは関連する設定をいじくり回す必要はないと確信しています。しかし、私の仮定が間違っていれば、コメントで他の人からの意見を聞くことができます。

前提条件。

まず、Xcodeをインストールする必要があります。また、Xcode以降(少なくともバージョン4.3以降)、必要なGNUバージョンのautoconfautomake、およびlibtoolは含まれていません。 この回答にautoconfautomakelibtoolをインストールする方法 の詳細を提供します。この回答の残りの部分は、システムにはすでにその設定があります。

ソースからGeoIPをインストールします。

前提条件をカバーしたら、次のようにMaxMindのGeoIPをインストールできます。

作業ディレクトリをホームディレクトリに設定します。

cd

ソースコードを取得して解凍します。

curl -O http://www.maxmind.com/download/geoip/api/c/GeoIP-latest.tar.gz
tar -xvzf GeoIP-latest.tar.gz

圧縮されていないソースコードディレクトリに移動します。

cd ./GeoIP*

ソースコードでlibtoolizeを実行します。

libtoolize -f

それが完了したら、ソースコードでconfigureスクリプトを実行します。

./configure

次に、makeを実行してコンパイルします。

make

次に、make checkを実行して、すべてが正常であることを確認します。

make check

今それをインストールします:

Sudo make install

geoiplookupコマンドを実行してインストールされていることを確認します。このコマンドの出力は、次のようになります。

Usage: geoiplookup [-h] [-?] [-d custom_dir] [-f custom_file] [-v] [-i] [-l] <ipaddress|hostname>

これでGeoIPソースコードがコンパイルされましたが、使用/参照するためのGeoIPデータベースがインストールされていません。それでは、それらをインストールしましょう。

GeoIPデータベースのインストール。

そこで、このようにcurlで利用できる3つの主要なGeoIPデータベースを取得します。作業ディレクトリをホームディレクトリに設定します。

cd

次に、curlを使用してGeoIP.dat.gzGeoLiteCity.dat.gz、およびGeoIPASNum.dat.gzデータベースを取得します。

curl -O http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
curl -O http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
curl -O http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz

それが終わったら、GeoIPプログラムが参照するための適切なディレクトリである/usr/local/share/GeoIP/にそれらを移動しましょう。そのディレクトリがシステムに存在しない場合は、次のようにすることができます。

Sudo mkdir -p /usr/local/share/GeoIP/

これで、ダウンロードしたGeoIP.dat.gzGeoLiteCity.dat.gz、およびGeoIPASNum.dat.gzデータベースをそのディレクトリに移動します。

Sudo mv ~/GeoIP.dat.gz /usr/local/share/GeoIP/
Sudo mv ~/GeoLiteCity.dat.gz /usr/local/share/GeoIP/
Sudo mv ~/GeoIPASNum.dat.gz /usr/local/share/GeoIP/

そして、それらを所定の位置で解凍します。

Sudo gzip -d -f /usr/local/share/GeoIP/GeoIP.dat.gz
Sudo gzip -d -f /usr/local/share/GeoIP/GeoLiteCity.dat.gz
Sudo gzip -d -f /usr/local/share/GeoIP/GeoIPASNum.dat.gz

また、次のようにGeoLiteCity.datの名前をGeoIPCity.datに変更する必要があります。

Sudo mv /usr/local/share/GeoIP/GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat

最終的なGeoIPバイナリテスト。

GeoIPバイナリをソースからコンパイルしてインストールし、データベースを配置すると、geoiplookupは期待どおりに機能するはずです。たとえば、GoogleでGeoIPルックアップを実行してみましょう。

geoiplookup google.com

すべてがうまくいった場合のそのコマンドの出力は次のようになります。

GeoIP Country Edition: US, United States
GeoIP City Edition, Rev 1: US, CA, California, Mountain View, 94043, 37.419201, -122.057404, 807, 650
GeoIP ASNum Edition: AS15169 Google Inc.
3
JakeGould

コンパイル後、ライブラリパスを出力する必要があります。

---------------------------------------------------------------------- 
Libraries have been installed in:    /usr/local/lib

dylibファイルへのパスを設定します。

GEOIP_LIBRARY_PATH = '/usr/local/lib/libGeoIP.dylib'
GEOIP_PATH = GEOIP_DATA_FILE
0
sbaechler