为Windows 7编译IP2Location Python扩展

2024-05-16 11:38:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想编译/安装这里的IP2Location Python扩展:

www.ip2location.com/python.aspx

我试着按照这些网站的指示:

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

但我不知道在哪里。问题是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 `_inet_addr@4'
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

我在Windows7上运行的是32位的Python2.6.3。 我有msvisualstudio2008(尽管不知道如何使用它),当然还有cygwin/MinGW。在

任何帮助或建议将不胜感激。在


Tags: homemakelinkerroralldirectorylalibs
2条回答

好的,所以完整的解决方案是:

  1. 下载stdint.h并将其放入IP2Location C库文件夹:http://msinttypes.googlecode.com/svn/trunk/stdint.h
  2. 打开dos提示符并执行“C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat公司““
  3. 从同一个dos提示符执行“nmake/f生成文件.win““
  4. cd到Python扩展文件夹并执行“set LINK=/节点:msvcrt.lib““
  5. 最后做标准的“python设置.py安装“

“设置链接”的功劳=/节点:msvcrt.lib“建议来自Providenza&Boekelheide,Inc.的蒂姆·罗伯茨(probo.com网站). 他好心地回答了我关于pythonwin32邮件列表的求助。谢谢蒂姆!在

尝试向链接命令添加-lws2_32选项。在

顺便说一句,还有一个pure Python library从IP获取国家。在

相关问题 更多 >