2009-11-29 107 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