вторник, 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

8 комментариев:

  1. Доброго времени суток!
    У меня не работает модуль. Когда я его импортирую, мне пишет dll не win32
    http://clip2net.com/clip/m0/1346220751-clip-4kb.png

    ОтветитьУдалить
  2. Гм, может в разрядности дело. python 32 нужен.

    ОтветитьУдалить
  3. Добрый день. наверное заработался и туплю, но "3) Ассемблер Nasm, а также добавить путь до bin в переменную path (брать отсюда http://www.nasm.us/)" можно подробнее про добавить путь до bin в переменную path. переменная %path% это та которая в nasmpath.bat? И путь до какого bin?

    ОтветитьУдалить
  4. По-моему bin ассемблера в переменную Path Windows

    ОтветитьУдалить
  5. Прикрутил путь к nasm в системные переменные. и все равно при сборке openssl пишет:
    Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
    Copyright (C) Microsoft Corporation. All rights reserved.

    Building OpenSSL
    nasm -f win32 -o tmp32\md5-586.obj tmp32\md5-586.asm
    'nasm' is not recognized as an internal or external command,
    operable program or batch file.
    NMAKE : fatal error U1077: 'nasm' : return code '0x1'
    Stop.

    ОтветитьУдалить
  6. Я вряд ли чем могу тебе помочь, во-первых, не помню, во-вторых сам в этом не очень разбираюсь, всё по инструкции делал.

    ОтветитьУдалить
  7. если кто столкнется с такой же проблемой, решение получилось таким:
    1. Привязка nasm в системные переменные ничего не дала.
    2. Скопировал nasm.exe в папку к openSSL и заработало.

    ОтветитьУдалить
  8. Здравствуйте. Необходим pycurl под x64, все попытки собрать, заканчивались печально. Не могу найти примеров сборки под x64, не подскажите в какую сторону копать???

    ОтветитьУдалить