Скомпилируйте расширение Python для IP2 для Windows 7 - PullRequest
1 голос
/ 29 ноября 2009

Я хочу скомпилировать / установить расширение IP2Location Python, найденное здесь:

www.ip2location.com / python.aspx

Я пытался следовать инструкциям на этих сайтах:

eli.thegreenplace.net / 2008/06/28 / компиляции-питон-расширения-с-Distutils-и-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

Я использую Python 2.6.3 на 32-битной Windows 7. У меня есть MS Visual Studio 2008 (хотя я не знаю, как его использовать) и, конечно, Cygwin / MinGW.

Любая помощь или указатели будут с благодарностью.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

ОК, поэтому полное решение:

  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 Makefile.win"
  4. перейдите в папку расширения Python и выполните команду "set LINK = / nod: msvcrt.lib"
  5. наконец, выполните стандартную "установку python setup.py"

Благодарность за совет "set LINK = / nod: msvcrt.lib" принадлежит Тиму Робертсу из Провиденцы и Бокельхайде, Inc (probo.com). - он был достаточно любезен, чтобы ответить на мой призыв о помощи в списке рассылки python win32. Спасибо, Тим!

1 голос
/ 30 ноября 2009

Попробуйте добавить опцию -lws2_32 к команде связывания.

Кстати, есть еще чистая библиотека Python для получения страны из IP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...