summaryrefslogtreecommitdiff
path: root/INSTALL.rst
blob: 4440e7a41218cbdd8ff9b2d02064543fe47c10a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
NOTE: You need Python and libcurl installed on your system to use or
build pycurl.  Some RPM distributions of curl/libcurl do not include
everything necessary to build pycurl, in which case you need to
install the developer specific RPM which is usually called curl-dev.


Distutils
---------

Build and install pycurl with the following commands:

    (if necessary, become root)
    tar -zxvf pycurl-$VER.tar.gz
    cd pycurl-$VER
    python setup.py install

$VER should be substituted with the pycurl version number, e.g. 7.10.5.

Note that the installation script assumes that 'curl-config' can be
located in your path setting.  If curl-config is installed outside
your path or you want to force installation to use a particular
version of curl-config, use the '--curl-config' commandline option to
specify the location of curl-config.  Example:

    python setup.py install --curl-config=/usr/local/bin/curl-config

If libcurl is linked dynamically with pycurl, you may have to alter the
LD_LIBRARY_PATH environment variable accordingly.  This normally
applies only if there is more than one version of libcurl installed,
e.g. one in /usr/lib and one in /usr/local/lib.


easy_install / pip
----------------

    easy_install pycurl
    pip install pycurl

If you need to specify an alternate curl-config, it can be done via an
environment variable:

    export PYCURL_CURL_CONFIG=/usr/local/bin/curl-config
    easy_install pycurl

The same applies to the SSL backend, if you need to specify it (see the SSL
section below):

    export PYCURL_SSL_LIBRARY=openssl
    easy_install pycurl


SSL
---

PycURL has locks around crypto functions. In order to compile correct locking
code, it has to know which SSL library is going to be used by libcurl at
runtime. setup.py will attempt to automatically detect the SSL library that
libcurl uses, but this does not always work. In the cases when setup.py cannot
figure out the SSL library, it must be provided via --with-ssl/--with-gnutls/
--with-nss arguments, just like libcurl's configure script uses, or via
PYCURL_SSL_LIBRARY=openssl|gnutls|nss environment variable.

Please note the difference in spelling that concerns OpenSSL: the command-line
argument is --with-ssl, to match libcurl, but the environment variable value is
"openssl".


Windows
-------

First, you will need to obtain dependencies. These can be precompiled binaries
or source packages that you are going to compile yourself.

For a minimum build you will just need libcurl source. Follow its Windows
build instructions to build either a static or a DLL version of the library,
then configure PycURL as follows to use it:

    python setup.py --curl-dir=c:\dev\curl-7.33.0\builds\libcurl-vc-x86-release-dll-ipv6-sspi-spnego-winssl --use-libcurl-dll

Note that --curl-dir does not point to libcurl source but rather to headers
and compiled libraries.

Additional Windows setup.py options:

--use-libcurl-dll - build against libcurl DLL, if not given PycURL will be built
against libcurl statically.

--libcurl-lib-name=libcurl_imp.lib - specify a different name for libcurl
import library. The default is libcurl.lib which is appropriate for static
linking and is sometimes the correct choice for dynamic linking as well. The
other possibility for dynamic linking is libcurl_imp.lib.

A good setup.py target to use is bdist_wininst which produces an executable
installer that you can run to install PycURL.