I'm using virtualenv
and I need to install "psycopg2".
I have done the following:
pip install http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
And I have the following messages:
Downloading/unpacking http://pypi.python.org/packages/source/p/psycopg2/psycopg2
-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
Downloading psycopg2-2.4.tar.gz (607Kb): 607Kb downloaded
Running setup.py egg_info for package from http://pypi.python.org/packages/sou
rce/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
Error: pg_config executable not found.
Please add the directory containing pg_config to the PATH
or specify the full executable path with the option:
python setup.py build_ext --pg-config /path/to/pg_config build ...
or with the pg_config option in 'setup.cfg'.
Complete output from command python setup.py egg_info:
running egg_info
creating pip-egg-info\psycopg2.egg-info
writing pip-egg-info\psycopg2.egg-info\PKG-INFO
writing top-level names to pip-egg-info\psycopg2.egg-info\top_level.txt
writing dependency_links to pip-egg-info\psycopg2.egg-info\dependency_links.txt
writing manifest file 'pip-egg-info\psycopg2.egg-info\SOURCES.txt'
warning: manifest_maker: standard file '-c' not found
Error: pg_config executable not found.
Please add the directory containing pg_config to the PATH
or specify the full executable path with the option:
python setup.py build_ext --pg-config /path/to/pg_config build ...
or with the pg_config option in 'setup.cfg'.
----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in C:\Documents and Settings\anlopes\Application Data\pip\p
ip.log
My question, I only need to do this to get the psycopg2 working?
python setup.py build_ext --pg-config /path/to/pg_config build ...
Answers
The error you're encountering happens because psycopg2
requires PostgreSQL development libraries and header files to compile, specifically the pg_config
utility, which is part of the PostgreSQL client installation. Without pg_config
, the installation can't proceed because it needs this utility to locate PostgreSQL headers and libraries.
Here are the steps to resolve the issue:
1. Install PostgreSQL Development Libraries
You need to install the PostgreSQL development libraries for your system. This will provide the pg_config
utility that psycopg2
requires.
On Ubuntu/Debian:
sudo apt-get install libpq-dev python-dev
On Fedora/RHEL:
sudo yum install postgresql-devel python-devel
On macOS:
If you have PostgreSQL installed through brew
:
brew install postgresql
Alternatively, you can download and install the full PostgreSQL package from the PostgreSQL website.
On Windows:
If you're using Windows, it's trickier to compile psycopg2
from source due to the PostgreSQL development libraries requirement. You can either:
- Install the pre-compiled binary version: This is the easiest approach, as it avoids the need for PostgreSQL headers. You can download pre-compiled binary versions of
psycopg2
for Windows from here. - Install PostgreSQL: You can install PostgreSQL using the PostgreSQL installer for Windows. Ensure the
pg_config
utility is on yourPATH
.
2. Ensure pg_config
is in Your PATH
After installing PostgreSQL, ensure that the pg_config
utility is in your PATH
. To check if it's available, you can run:
pg_config --version
If it returns a version number, you’re good to go. If not, locate the pg_config
binary (usually in /usr/pgsql-xx/bin/pg_config
or /usr/local/bin/pg_config
on Linux or in the PostgreSQL installation directory on macOS or Windows) and add it to your PATH
.
For example:
export PATH=$PATH:/path/to/pg_config_directory
3. Install psycopg2
Once pg_config
is available, retry installing psycopg2
:
pip install psycopg2
If you don't need to compile psycopg2
from source (and especially if you're on Windows), you can install a binary version that doesn’t require pg_config
or development headers:
pip install psycopg2-binary
Note: The psycopg2-binary
package is a self-contained package and is suitable for most applications, though it's recommended to switch to the compiled version (psycopg2
) in production for better performance and stability.
Summary
- Install the PostgreSQL development libraries (
libpq-dev
,postgresql-devel
, etc.). - Ensure
pg_config
is available in yourPATH
. - Install
psycopg2
viapip
or usepsycopg2-binary
if you're on Windows or don’t need to compile from source.
This should resolve the issue, and you'll be able to install psycopg2
successfully.