关于python:如何查找pg_config路径

How to find pg_config path

在这里完成新手,试图设置Django与ProstgreSQL一起工作。

我正在使用mac osx 10.6.8。 我还安装了PostgreSQL 9.3

当我在终端中运行pip install psycopg2时,我收到以下错误

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

我已经看过很多帖子
如何安装的-psycopg2-与点子上,Python
PG-配置可执行未找到

但我不知道如何找到包含pg_config的bin文件夹位置。 找到这条路的任何提示?


我建议你尝试使用Postgres.app。 (http://postgresapp.com)
这样您就可以在Mac上轻松打开和关闭Postgres。
完成后,通过附加以下内容将Postgres的路径添加到.profile文件中:

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

只有在将Postgres添加到路径后,才能尝试在虚拟环境(使用pip)或全局站点包中安装psycopg2


1
sudo find / -name"pg_config" -print

我的配置答案是/Library/PostgreSQL/9.1/bin/pg_config(MAC Maverick)


Postgres.app最近更新了。现在它将所有二进制文件存储在"Versions"文件夹中

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

其中9.4 -version的PostgreSQL。


安装自制软件

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

然后安装postgresql

1
brew install postgresql

给了我这个可爱的输出:

1
checking for pg_config... yes

啊啊,是的


在MacOS X 10.11上安装当前的PostgreSQL应用程序后,这就是pg_config文件/Library/PostgreSQL/9.5/bin/pg_config的位置。

然后在终端上:

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

这会将路径放在您正在使用的终端的.profile中。

在您的环境中(假设您使用的是virtualenv),然后安装psycopg2:

1
    $ pip install psycopg2

您应该看看之前是否已经下载过:

1
2
3
4
5
    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


总结一下 - PostgreSQL根据版本号和安装方法在不同位置安装其文件(包括其二进制文件或可执行文件)。

一些可能性:

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

难怪人们感到困惑!

此外,如果您的$ PATH环境变量包含指向包含可执行文件的目录的路径(要确认这一点,请在命令行上使用echo $PATH),然后您可以运行which pg_configwhich psql等来查找文件所在的位置。


我有完全相同的错误,但我通过brew安装postgreSQL并重新运行原始命令,它完美地工作:

brew install postgresql


您可以使用其名称找到pg_config目录:

1
2
3
$ pg_config --bindir
/usr/lib/postgresql/9.1/bin
$

在Mac和Debian上测试过。唯一的问题是我无法看到如何在同一台机器上安装不同版本的postgres找到bindir。虽然这很容易猜到! :-)

注意:我在Debian上将我的pg_config更新为9.5:

1
sudo apt-get install postgresql-server-dev-9.5


我用了 :

1
2
3
export PATH=$PATH:/Library/PostgreSQL/9.6/bin

pip install psycopg2

检查/Library/PostgreSQL/9.3/bin,你应该找到pg_config

I.E. /Library/PostgreSQL//

ps:如果您认为有必要满足您的需求,您可以执行以下操作 -

在你的?目录中创建一个.profile

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

您现在可以使用来自终端的psqlpostgres命令,并安装psycopg2或任何其他依赖项而不会出现问题,而且当您想要窥视pg_dir时,您总是可以ls $PG_HOME/bin


这是如何简单地获取pg_config的路径

1
2
$ which pg_config                 // prints the directory location
/usr/bin/pg_config


在Mac上有相同的问题,你可能需要

brew install postgresql

然后你就可以跑了

pip install psycopg2

brew将为您解决PATH问题

这个解决方案至少对我有用。