代码之家  ›  专栏  ›  技术社区  ›  jckdnk111

为Windows 7编译ip2location python扩展

  •  1
  • jckdnk111  · 技术社区  · 15 年前

    我想编译/安装ip2location python扩展,可在这里找到:

    网址:www.ip2location.com/python.aspx

    我在这些网站上尝试遵循说明:

    eli.thegreenplace.net/2008/06/28/compiling-python-extensions-with-distuils-and-mingw/ boodeb.org/main/python/build-windows-扩展

    但我在哪儿也找不到。问题是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位上运行python 2.6.3。 我有MS Visual Studio 2008(尽管不知道如何使用它),当然还有Cygwin/Mingw。

    任何帮助或指点都将非常感谢。

    2 回复  |  直到 15 年前
        1
  •  2
  •   jckdnk111    15 年前

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

    1. 下载stdint.h并将其放入ip2location c library文件夹: 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 makefile.win”
    4. cd到python扩展文件夹并执行“set link=/nod:msvcrt.lib”
    5. 最后执行标准的“python setup.py安装”

    “set link=/nod:msvcrt.lib”建议的信誉将授予provenza&boekelheide,inc(probo.com)的tim roberts。--他很好地回答了我在python win32邮件列表中寻求帮助的呼声。谢谢提姆!

        2
  •  1
  •   Denis Otkidach    15 年前

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

    顺便说一下,还有一个 pure Python library 从知识产权中获取国家。