Mac + virtualenv + pip + postgresql =错误:找不到pg_config可执行文件

时间:2013-11-24 03:55:24

标签: python macos postgresql psycopg2

我正在尝试为教程安装postgres,但是pip给了我错误:

pip install psycopg

我得到的一段错误:

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

我的virtualenv中的pg_config在哪里?如何配置?我正在使用virtualenv,因为我不想在系统范围内安装postgres。

15 个答案:

答案 0 :(得分:82)

在Mac上,如果您使用的是Postgres.app,则pg_config文件位于/Applications/Postgres.app/Contents/Versions/<current_version>/bin目录中。这需要添加到您的系统路径以修复此错误,如下所示:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<current_version>/bin

例如,如果当前的Postgres.app版本为9.5,则此导出行将为:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.5/bin

使用更新版本的Postgres.app(&gt; 9.5?),您只需添加“latest”代替版本号,如下所示:

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

答案 1 :(得分:80)

在Mac上,解决方案是安装postgresql

brew install postgresql

在CentOS上,解决方案是安装postgresql-devel

sudo yum install postgresql-devel

pg_config位于postgresql-devel

答案 2 :(得分:26)

我完全同意john hight,假设OP确切地指定使用 virtualenv 的需要,那么大多数发布的答案都完全是offtopic。

对我来说,答案是在激活virtualenv时在提示符中运行以下命令:

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

(注意第9.4部分代表版本,可能会有所不同)

或者如果您想使用最新安装的Postgres版本:

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

然后:

pip install psycopg2

假设你已经安装了postgres。如果没有,那么请记住,最好和推荐的解决方案是使用:Postgres.app

答案 3 :(得分:17)

不要忘记虚拟环境中的$ PATH变量!=全局$ PATH变量。您可以在virtualenv中使用“echo $ PATH”以及新shell中进行确认。因此,除非你想在你的虚拟环境中安装PostgreSQL作为一个独特的实例(不值得做,imo),你需要修改virtualenv中的$ PATH变量以包含全局安装的路径(这将是解决你丢失的pg_config错误。)

以下是步骤:

1。)在新shell中,键入“which pg_config”。这将返回路径。复制它。就我而言,路径看起来像这样:/Applications/Postgres.app/Contents/Versions/9.3/bin

2。)回到你的virtualenv shell,输入'export PATH = / your-path-to-pg_config:$ PATH'

3。)然后,仍然在virtualenv中,'pip install psycopg2'

如果一切按计划进行,这将在虚拟环境中安装psycopg2,但安装将参考您的Global PostgreSQL安装。在我的例子中,这个Global安装是通过Postgres.App安装的,因此是路径。我更喜欢这种使用psycopg2的方法,因为这意味着我可以在任何virtualenv中轻松使用数据库,而不仅仅是在定义的虚拟环境中。

希望这可以帮助到达这里的任何人。对于Google juice,这是遇到此问题时返回的显式(和模糊)错误语言:
命令python setup.py egg_info失败,错误代码为1

答案 4 :(得分:10)

以下是我在Mac(OSX 10.9)上解决此问题的方法:

brew update
brew install --force ossp-uuid
brew install postgresql
pip install psycopg

当我尝试pip install psycopgLLVM 5.1 issue)时出现CLANG错误,所以我不得不用这个命令安装psycopg:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg

它类似于Mingyu's解决方案,但有足够的差异我认为值得分享。

答案 5 :(得分:5)

当构建工具找不到Postgresql库时,会导致此错误。

通常需要指示psycopg2如何找到pg_config二进制文件,你可以:

  1. 在shell路径中添加pg_config的路径(/ usr / local / pgsql / bin /)

  2. 或编辑psycopg2源文件夹中的setup.cfg文件并提供 以pg_config =

  3. 开头的行的pg_config的完整路径
      

    pg_config =的/ usr /本地/ pgsql的/ bin中/ pg_config

    • 以上是一个示例,您可以locate pg_config找出它所在的位置,或者只需输入which pg_config,它就会告诉您路径。

    错误来自于未在系统上安装postgresql。如果是这样,请下载并构建postgres,或者为OS X下载预先构建的psycopg2二进制文件。

答案 6 :(得分:3)

OS X El Captain (10.11.6) + brew + virtualenv + PostgreSQL 9.5

安装PostgreSQL 9.5后:

brew install postgresql@9.5

打开终端并执行:

export PATH=$PATH:/usr/local/opt/postgresql\@9.5/bin/
pip install psycopg2

答案 7 :(得分:2)

在Windows上,我从http://www.enterprisedb.com/products-services-training/pgdownload#windows手动安装了postgres。 之后,同样的命令也可以。

答案 8 :(得分:1)

virtualenv适用于python包。我认为你不能在virtualenv中包含postgres。您看到的错误消息可能是因为您尚未安装postgres。 psycopg2安装脚本正在查找postgres文件(在本例中为pg_config)而未查找它们,因为它未安装。无法使用pip或virtualenv安装postgres。

答案 9 :(得分:1)

除了@bkev和@andi提供的答案之外,根据Postgres.app上的documentation,您应该将以下内容添加到Mac上的bash_profile中:

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

请注意,没有硬编码版本号。我想将此添加为对上述答案的评论,但我没有足够的代表。

答案 10 :(得分:1)

如果您使用的是postgresql 9.4,则该文件位于

/usr/pgsql-9.4/bin/pg_config

包的名称是

postgresql94-9.4.9-1PGDG.rhel6.x86_64

将pg_config添加到PATH,请执行以下操作

PATH=$PATH:/usr/pgsql-9.4/bin/

答案 11 :(得分:1)

您必须配置路径postgresql:

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

之后,您必须安装要求:

pip3 install -r requirements

答案 12 :(得分:0)

Ubuntu 上我只需要postgres开发包:

sudo apt-get install postgresql-server-dev-all

答案 13 :(得分:0)

我的位于/Library/PostgreSQL/9.4/bin

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

答案 14 :(得分:0)

如果您不必专门使用psycopg驱动程序,请切换到pg8000驱动程序。它是纯粹的Python而且不​​那么挑剔。