78

Complete newbie here, trying to set up Django to work with PostgreSQL.

I'm using mac osx 10.6.8. I have also installed PostgreSQL 9.3

When I run pip install psycopg2 in terminal I get the following error

Downloading/unpacking psycopg2
  Downloading psycopg2-2.5.2.tar.gz (685kB): 685kB downloaded
  Running setup.py (path:/private/var/folders/A9/A99cs6x0FNusPejCVkYNTE+++TI/-Tmp-/pip_build_bengorman/psycopg2/setup.py) egg_info for package psycopg2

    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'.

I've seen a number of posts on this
how-to-install-psycopg2-with-pip-on-python
pg-config-executable-not-found

but I have no clue how to find the bin folder location containing pg_config. Any tips on finding this path?

Nick
  • 118,076
  • 20
  • 42
  • 73
Ben
  • 15,465
  • 26
  • 90
  • 157
  • 5
    Try `sudo find / -name pg_config` in Terminal. – twil Jan 12 '14 at 20:33
  • 3
    As a Mac OS X user please always explain *how you installed PostgreSQL*. There are too many different packages of PostgreSQL for OS X, all with their own bizarre and frustrating quirks. Homebrew? MacPorts? Postgres.app? From source? EDB? ... – Craig Ringer Jan 13 '14 at 01:22

14 Answers14

112

I recommend that you try to use Postgres.app. (http://postgresapp.com) This way you can easily turn Postgres on and off on your Mac. Once you do, add the path to Postgres to your .profile file by appending the following:

PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

Only after you added Postgres to your path you can try to install psycopg2 either within a virtual environment (using pip) or into your global site packages.

eykanal
  • 23,724
  • 17
  • 75
  • 107
elynch
  • 1,870
  • 1
  • 16
  • 20
41
sudo find / -name "pg_config" -print

The answer is /Library/PostgreSQL/9.1/bin/pg_config in my configuration (MAC Maverick)

wogsland
  • 7,351
  • 16
  • 46
  • 79
user1953296
  • 429
  • 4
  • 2
28

Postgres.app was updated recently. Now it stores all the binaries in "Versions" folder

PATH="/Applications/Postgres.app/Contents/Versions/9.4/bin:$PATH"

Where 9.4 – version of PostgreSQL.

Daniil Ryzhkov
  • 6,649
  • 2
  • 35
  • 55
24

Installing homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

And then installing postgresql

brew install postgresql

gave me this lovely bit of output:

checking for pg_config... yes

ahhh yeahhhhh

cpres
  • 704
  • 1
  • 7
  • 12
15

Once you install the current PostgreSQL app on the MacOS X 10.11, this is where the pg_config file is /Library/PostgreSQL/9.5/bin/pg_config.

Then on the Terminal:

    $ export PG_HOME=/Library/PostgreSQL/9.5
    $ export PATH=$PATH:$PG_HOME/bin

This will put the path in the .profile of whatever terminal you are using.

In your environment (assuming you are using virtualenv) you then install psycopg2:

    $ pip install psycopg2

You should see if you had downloaded it before:

    Collecting psycopg2
      Using cached psycopg2-2.6.1.tar.gz
    Installing collected packages: psycopg2
      Running setup.py install for psycopg2 ... done
    Successfully installed psycopg2-2.6.1
Afrowave
  • 841
  • 9
  • 21
  • 1
    Amazing. In my case it was not under folder library. It was on /Applications/Postgres.app/.... Big and Many Thanks! – Salva Jul 12 '16 at 02:57
8

To summarize -- PostgreSQL installs its files (including its binary or executable files) in different locations, depending on the version number and the installation method.

Some of the possibilities:

/usr/local/bin/
/Library/PostgreSQL/9.2/bin/
/Applications/Postgres93.app/Contents/MacOS/bin/
/Applications/Postgres.app/Contents/Versions/9.3/bin/

No wonder people get confused!

Also, if your $PATH environment variable includes a path to the directory that includes an executable file (to confirm this, use echo $PATH on the command line) then you can run which pg_config, which psql, etc. to find out where the file is located.

jkdev
  • 9,037
  • 14
  • 52
  • 75
6

I had exactly the same error, but I installed postgreSQL through brew and re-run the original command and it worked perfectly :

brew install postgresql

romainm
  • 281
  • 7
  • 15
3

You can find the pg_config directory using its namesake:

$ pg_config --bindir
/usr/lib/postgresql/9.1/bin
$ 

Tested on Mac and Debian. The only wrinkle is that I can't see how to find the bindir for different versions of postgres installed on the same machine. It's fairly easy to guess though! :-)

Note: I updated my pg_config to 9.5 on Debian with:

sudo apt-get install postgresql-server-dev-9.5
Max Murphy
  • 955
  • 1
  • 7
  • 22
  • You have not understood what the problem is. The OP is getting the error because `pg_config` is not among the directories listed in `PATH`. Given this state of fact, then running `pg_config` at the shell like you show won't work *for the exact same reason*. – Louis May 12 '16 at 16:31
  • True - apologies. I found this when hunting for paths and skimmed a bit too much! – Max Murphy May 12 '16 at 17:32
  • Only answer in here that helped me had 0 votes... All I can provide is one. In case it helps anyone, brew installs (version 9.5.2) at `/usr/local/Cellar/postgresql/9.5.2/bin` – dave May 21 '16 at 13:41
3

Have same issue on mac, you probably need to

brew install postgresql

then you can run

pip install psycopg2

The brew will fix PATH issue for you

this solution works for me at least.

1

check /Library/PostgreSQL/9.3/bin and you should find pg_config

I.E. /Library/PostgreSQL/<version_num>/

ps: you can do the following if you deem it necessary for your pg needs -

create a .profile in your ~ directory

export PG_HOME=/Library/PostgreSQL/9.3
export PATH=$PATH:$PG_HOME/bin

You can now use psql or postgres commands from the terminal, and install psycopg2 or any other dependency without issues, plus you can always just ls $PG_HOME/bin when you feel like peeking at your pg_dir.

codesage
  • 11
  • 4
1

I used :

export PATH=$PATH:/Library/PostgreSQL/9.6/bin

pip install psycopg2
Deepika Anand
  • 307
  • 3
  • 6
1

This is how to simply get the path of pg_config

$ which pg_config                 // prints the directory location 
/usr/bin/pg_config
bereket gebredingle
  • 5,722
  • 2
  • 26
  • 40
1

Works for me by installing the first the following pip packages: libpq-dev and postgresql-common

Koleen BP
  • 61
  • 4
  • 1
    ..question is about finding a folder... you're adding joy about installation of packages... – ZF007 Dec 28 '19 at 18:32
0

path of pg_config in my case (MacOS)

/Library/PostgreSQL/13/bin

Execute the following in the terminal:

PATH="/Library/PostgreSQL/13/bin:$PATH"

Then

pip install psycopg2
E Y CD
  • 1