Installing pycurl in MacOS Leopard

Lib Curl

Leopard comes with Python 2.5.1. And it’s nice to be able to use easy_install to add python packages, but it can happen that some of those libraries depend in their C/C++ counterparts, and they are a bit outdated in Leopard.

My case was with pycurl. Leopard python doesn’t come with pycurl. However it includes cURL and libcurl version 7.16.3.

$ curl –version
curl 7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: GSS-Negotiate IPv6 Largefile NTLM SSL libz

If I try to install pycurl from easy_install, I get this message regarding the version of the C version of the library

$ sudo easy_install-2.5 pycurl

Using curl-config (libcurl 7.16.3)
src/pycurl.c:55:4: error: #error “Need libcurl version 7.16.4 or greater to compile pycurl.”

I have also macports, so I tried to install the version requiered through macports. It´s not an upgrade, because you continue having the original Leopard version plus the new one in the /opt directory.

$ port search curl

curl net/curl 7.18.0 Tool for transferring files with URL syntax
$ sudo port install curl
—> Fetching curl
—> Verifying checksum(s) for curl
—> Extracting curl
—> Configuring curl
—> Building curl with target all
—> Staging curl into destroot
—> Installing curl 7.18.0_0
—> Activating curl 7.18.0_0
—> Cleaning curl

Seems that everything is ok. But before you run to run easy_install again, you have to realize that easy_install doesn’t know anything about your new curl installation of curl in /opt. easy_install will use curl-config to determine the location of the curl library. So, if you update your PATH (if you don’t ave it already) adding the /opt entry in the beginning, everything will be solved.

$ curl-config –version
libcurl 7.16.3
$ export PATH=/opt/local/bin/:$PATH
$ curl-config –version
libcurl 7.18.0

Now the installation will proceed:

$ sudo easy_install pycurl
Searching for pycurl
Reading http://pypi.python.org/simple/pycurl/
Reading http://pycurl.sourceforge.net/
Reading http://pycurl.sourceforge.net/download/
Best match: pycurl 7.16.4
Downloading http://pycurl.sourceforge.net/download/pycurl-7.16.4.tar.gz
Processing pycurl-7.16.4.tar.gz
Running pycurl-7.16.4/setup.py -q bdist_egg –dist-dir /tmp/easy_install-f4LJrU/pycurl-7.16.4/egg-dist-tmp-9l6i1M
Using curl-config (libcurl 7.18.0)
ld: warning in /opt/local/lib/libcurl.dylib, file is not of required architecture
ld: warning in /opt/local/lib/libz.dylib, file is not of required architecture
zip_safe flag not set; analyzing archive contents…
Adding pycurl 7.16.4 to easy-install.pth file
.
Installed /Library/Python/2.5/site-packages/pycurl-7.16.4-py2.5-macosx-10.5-i386.egg
Processing dependencies for pycurl
Finished processing dependencies for pycurl

And we’re ready to rock’n'roll:

>>> import pycurl
>>> pycurl.version
‘libcurl/7.18.0 zlib/1.2.3′
>>> c = pycurl.Curl()
>>> c.setopt(pycurl.URL, “http://www.google.com”)
>>> c.setopt(pycurl.FOLLOWLOCATION, 1)
>>> c.perform()
… (dumped html) …
>>> c.getinfo(pycurl.HTTP_CODE)
200

:)

Tags:,,,, »

Trackback URL: http://fitri.manzanisimo.net/2008/03/30/installing-pycurl-in-macos-leopard/trackback/

3 Responses so far »

  1. 1

    Sevein said,

    2008-03-31 @ 10.36 am

    Es la caña que Leopard traiga un Python tan modernito…

  2. 2

    Andrew said,

    2008-11-16 @ 8.05 am

    Thanks to great! Article great help. I had the same problems, all done as well. Version pycurl only the newer libcurl/7.19.2 zlib/1.2.3:) Thank you!

  3. 3

    Andrew said,

    2008-11-22 @ 12.27 pm

    Help please! I have problems during the installation pycurl.
    —————————-
    curl-config - version ->

    libcurl 7.19.2
    —————————-

    sudo easy_install-2.5 pycurl ->

    Searching for pycurl
    Reading http://pypi.python.org/simple/pycurl/
    Reading http://pycurl.sourceforge.net/
    Reading http://pycurl.sourceforge.net/download/
    Best match: pycurl 7.19.0
    Downloading http://pycurl.sourceforge.net/download/pycurl-7.19.0.tar.gz
    Processing pycurl-7.19.0.tar.gz
    Running pycurl-7.19.0/setup.py-q bdist_egg - dist-dir / tmp/easy_install-7Lyrla/pycurl-7.19.0/egg-dist-tmp-XEZGGX
    Using curl-config (libcurl 7.19.2)
    ld warning: in / opt / local / lib / libcurl.dylib, file is not of required architecture
    ld warning: in / opt / local / lib / libcurl.a, file is not of required architecture
    zip_safe flag not set; analyzing archive contents …
    No eggs found in / tmp/easy_install-7Lyrla/pycurl-7.19.0/egg-dist-tmp-XEZGGX (setup script problem?)
    —————————-

    What is the problem of “No eggs found in”?

Comment RSS · TrackBack URI

Say your words