2009-11-29 84 views
1

我想編譯/安裝IP2Location Python擴展在這裏找到:編譯IP2Location Python擴展爲Windows 7

www.ip2location.com/python.aspx

我試過下面的說明這些網站:

eli.thegreenplace.net/2008/06/28/compiling-python-extensions-with-distutils-and-mingw/ boodebr.org/main/python/build-windows-extensio ns

但是我沒有得到任何地方。問題是Python擴展依賴另一個C庫:

www.ip2location.com/c.aspx

當我嘗試編譯Cygwin中這個庫我得到以下輸出:

make all-recursive 
make[1]: Entering directory `/home/ty/Python-IP2Location/C-IP2Location-3.0.0' 
Making all in libIP2Location 
make[2]: Entering directory `/home/ty/Python-IP2Location/C-IP2Location-3.0.0/li 
bIP2Location' 
/bin/sh ../libtool --tag=CC --mode=link gcc -mno-cygwin -IiMath/ -g -O2 -modul 
e -no-undefined -avoid-version -o libIP2Location.la -rpath /cygdrive/c/MinGW/li 
b libIP2Location_la-IP2Location.lo libIP2Location_la-imath.lo 
libtool: link: rm -fr .libs/libIP2Location.dll.a 
libtool: link: gcc -mno-cygwin -shared .libs/libIP2Location_la-IP2Location.o .l 
ibs/libIP2Location_la-imath.o -mno-cygwin -o .libs/libIP2Location.dll -Wl,- 
-enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libIP2Location.dll. 
a 
.libs/libIP2Location_la-IP2Location.o: In function `IP2Location_ip2no': 
/home/ty/Python-IP2Location/C-IP2Location-3.0.0/libIP2Location/IP2Location.c:71 
8: undefined reference to `[email protected]' 
Creating library file: .libs/libIP2Location.dll.a 
collect2: ld returned 1 exit status 
make[2]: *** [libIP2Location.la] Error 1 
make[2]: Leaving directory `/home/ty/Python-IP2Location/C-IP2Location-3.0.0/lib 
IP2Location' 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory `/home/ty/Python-IP2Location/C-IP2Location-3.0.0' 
make: *** [all] Error 2 

我在Windows 7 32位上運行python 2.6.3。 我有MS Visual Studio 2008(雖然不知道如何使用它),當然還有cygwin/MinGW。

任何幫助或指針將不勝感激。

+0

因此,我得到了C庫來調用「C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ vcvarsall.bat」+ nmake + Makefile.win + http://msinttypes.googlecode.com/ svn/trunk/stdint.h 現在擴展本身拒絕編譯:http://jckdnk111.pastebin.com/f71e8ff3d 有一點需要注意 - 「C:\ Python26 \ PCbuild」在我的機器上缺失。 – jckdnk111 2009-12-01 00:24:06

回答

2

OK,所以完整的解決方案是:

  1. 下載stdint.h並把它放在IP2Location C庫文件夾:http://msinttypes.googlecode.com/svn/trunk/stdint.h
  2. 打開一個DOS提示符下,執行「C:\ Program Files文件\微軟的Visual Studio 9.0 \ VC \ vcvarsall.bat」
  3. 從相同DOS提示符執行 「NMAKE/F Makefile.win」
  4. cd到Python擴展文件夾,並執行 「設置LINK = /點頭:MSVCRT.LIB」
  5. 最後做標準「蟒蛇的setup.py安裝」

信用的「設置鏈接= /點頭:MSVCRT.LIB」建議去Providenza &的蒂姆·羅伯茨BOEKELHEIDE公司(probo.com)。 - 他很友好地回答我在python win32郵件列表上的求助。謝謝蒂姆!

1

嘗試添加-lws2_32選項來鏈接命令。

順便說一句,有另一個pure Python library從IP獲得國家。

+0

感謝您的回覆 - 不幸的是它沒有幫助。 你提到的python庫的功能不如IP2Location軟件包,但感謝提示。此外,我已經寫了一個純Python庫,但它不是很快 - 我希望C擴展將加快我的速度。 – jckdnk111 2009-11-30 21:27:14

+0

鏈接與ws2_32.lib有助於解決未定義的參考問題?這是一個窗口(我不確定Windows 7,但是)這個符號定義的庫。 – 2009-12-01 09:24:57

+0

不,它沒有任何區別。儘管感謝您的幫助。 – jckdnk111 2009-12-01 16:50:51