Compiling and installing psycopg
********************************

** Important note: if you plan to use psyopg2 in a multithreaed application
   make sure that your libpq has been compiled with the --with-thread-safety
   option. psycopg2 will work correctly even with a non-thread-safe libpq but
   libpq will leak memory.

While psycopg 1.x used autoconf for its build process psycopg 2 switched to
the more pythoning setup.py. Before building psycopg look at setup.cfg file
and change any settings to follow your system (or taste); then:

    python setup.py build

to build in the local directory; and:

    python setup.py install
    
to install system-wide.


Common errors and build problems
================================

One of the most common errors is trying to build psycopg without the right
development headers for PostgreSQL, Python or both. If you get errors, look
for the following messages and then take the appropriate action:

libpq-fe.h: No such file or directory
  PostgreSQL headers are not properly installed on your system or are
  installed in a non default path. First make sure they are installed, then
  check setup.cfg and make sure pg_config points to a valid pg_config
  executable. If you don't have a working pg_config try to play with the
  include_dirs variable (and note that a working pg_config is better.)


Using setuptools and EasyInstall
================================

If setuptools are installed on your system you can easily create an egg for
psycopg and install it. Download the source distribution (if you're reading
this file you probably already have) and then edit setup.cfg to your taste
and build from the source distribution top-level directory using:

    easy_install .


Compiling under Windows with mingw32
====================================

You can compile psycopg under Windows platform with mingw32
(http://www.mingw.org/) compiler. MinGW is also shipped with IDEs such as
Dev-C++ (http://www.bloodshed.net/devcpp.html) and Code::Blocks
(http://www.codeblocks.org). gcc binaries should be in your PATH.

You need a PostgreSQL with include and libary files installed. At least v8.0 is required.

First you need to create a libpython2X.a as described in 
http://starship.python.net/crew/kernr/mingw32/Notes.html. Then run:

    python setup.py build_ext --compiler=mingw32 install

