вторник, 29 мая 2012 г.

Собираем pycurl под windows (python 2.7).

Наверняка сейчас под windows pycurl у всех стоит вот с этого сайта , к сожалению, в этой версии есть такой неприятный баг, который неизвестно при каких условиях проявляется. Таким образом, необходимо собрать версию поновее, ибо больше сайтов со сборками pycurl я не видел.

Всё делал вот по этой статье http://curl.haxx.se/mail/curlpython-2009-11/0010.html за исключением небольшого ньюанса с ассемблером.

Для работы необходимо установить:

1) Visual Studio C++ Express (я ставил 2008).

2) Perl (я качал вот этот http://www.activestate.com/activeperl/downloads)

3) Ассемблер Nasm, а также добавить путь до bin в переменную path (брать отсюда http://www.nasm.us/)

Чтобы собрать pycurl нам надо собрать по статической библиотеке(.lib) из исходников для каждого из 3х составляющих, в скобках указаны версии которые я использовал:

zlib - http://www.zlib.net/ (1.2.7)
openssl - http://www.openssl.org/source/ (1.0.1с)
curl - http://curl.haxx.se/download.html (7.26.0)

И, конечно же, нам понадобятся исходники самого pycurl:
pycurl - http://pycurl.sourceforge.net/download/ (7.19.0)

Итак, создаем на диске С: в корне папку build и помещаем в неё все 4 папки:

  • curl-7.26.0

  • openssl-1.0.1с

  • pycurl-7.19.0

  • zlib-1.2.7

Открываем Visual C++ Command Line, переходим в папку с zlib и прописываем: nmake -f win32\MakeFile.msc

Без проблем собирается и в корне появляется файл zlib.lib

На очереди openssl, переходим в его папку и прописываем команды:

1) perl Configure VC-WIN32

2) ms\do_nasm.bat

3) nmake -f ms\nt.mak

После компиляции в out32 должны появится два файла *.lib

Переходим в папку c curl и пишем: nmake vc-ssl-zlib WINDOWS_SSPI=1 VC=vc9 OPENSSL_PATH=С:\build\openssl-1.0.1c ZLIB_PATH=C:\build\zlib-1.2.7

Наконец, собираем pycurl. Для этого качаем скрипт, распаковываем содержимое архива в папку с pycurl, переходим с помощью командной строки в неё и пишем: python setup_win32_ssl_own.py --curl-dir=..\curl-7.26.0 --openssl-dir=..\openssl-1.0.1с --zlib-dir=..\zlib-1.2.7 bdist_msi

В папке dist должен появится файл pycurl-ssl-7.19.0.win32-py2.7.msi