错误: 未找到 pg_config 可执行文件

我试图为一个教程安装 postgres,但是 pip给了我一个错误:

pip install psycopg

A snip of error I get:

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

我的虚拟世界中 pg_config在哪里?如何配置它?我使用 viralenv 是因为我不希望系统范围内安装 postgres。

99683 次浏览

Viralenv 是用于 Python 包的。我不认为你能把 postgres 放进一个 Virtual alenv 里。您看到的错误消息可能是因为您还没有安装 postgres。Psycopg2安装脚本正在查找 postgres 文件(在本例中为 pg _ config) ,但是没有找到它们,因为它没有安装。Postgres 不能使用 pip 或 viralenv 安装。

这个错误是由于构建工具找不到 Postgreql 库而导致的。

通常需要指导 Psycopg2如何找到 pg _ config 二进制文件,您可以:

  1. 将路径添加到 shell 路径(/usr/local/pgsql/bin/)中的 pg _ config

  2. 或者编辑 Psycopg2源文件夹中的 setup.cfg 文件,并提供 the full path to pg_config on the line that starts with pg_config=

Pg _ config =/usr/local/pgsql/bin/pg _ config

  • 上面是一个例子,你可以做 locate pg_config找出它的位置,或者简单地键入 which pg_config,它应该告诉你的路径。

Less often the error comes from not having postgresql installed on your system. If so, download and build postgres, or download a pre-built psycopg2 binary for OS X.

On Mac, the solution is to install postgresql:

brew install postgresql

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

sudo yum install postgresql-devel

pg_configpostgresql-devel包中

不要忘记虚拟环境中的 $PATH 变量!= 您的全局 $PATH 变量。您可以在 Virtual alenv 中以及在一个新的 shell 中使用‘ echo $PATH’来确认这一点。因此,除非您想要在您的虚拟环境中将 PostgreSQL 作为一个惟一的实例安装(不值得这么做,imo) ,否则您需要修改 viralenv 中的 $PATH 变量,以包含您的全局安装路径(这将解决您丢失的 pg _ config 错误)。

以下是步骤:

1)在一个新的 shell 中,输入‘ which pg _ config’。这将返回路径。收到。在我的例子中,路径看起来像这样:/Applications/Postgre.app/Content/Versions/9.3/bin

2.) Back in your virtualenv shell, type 'export PATH=/your-path-to-pg_config:$PATH'

3)然后,仍然在 Virtual alenv 中,‘ pip install Psycopg2’

如果一切按计划进行,这将在虚拟环境中安装 Psycopg2,但是安装将引用您的 Global PostgreSQL 安装。在我的例子中,这个环球安装是通过 Postgres 安装的。应用程序,因此路径。我更喜欢这种使用 Psycopg2的方法,因为它意味着我可以在任何 Virtual alenv 中轻松地使用数据库,而不仅仅是在已定义的虚拟环境中。

希望这能帮助到这里的每一个人。对于 Google 来说,当你遇到这个问题时,下面是返回的明确(和模糊)错误语言:
命令 python setup.py egg _ info 失败,错误代码1

下面是我如何在 Mac 上解决这个问题的(OSX 10.9) :

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

当我尝试 pip install psycopg(一个 LLVM 5.1问题)时,我得到了一个 CLANG 错误,所以我不得不用这个命令安装 Psycopg:

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

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

On Windows I installed postgres manually from http://www.enterprisedb.com/products-services-training/pgdownload#windows. 之后,同样的命令就可以工作了。

在 Mac 上,如果使用 后遗症应用程序,pg _ config 文件位于 /Applications/Postgres.app/Contents/Versions/<current_version>/bin目录中。这将需要添加到您的系统路径,以修复此错误,如下所示:

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

So for example, if the current Postgres.app version is 9.5, this export line would be:

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

使用更新版本的 Postgre.app (> 9.5?),你可以简单地用“最新”代替版本号,如下所示:

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

我完全同意 John Hight的观点,即大多数张贴的答案都是完全脱离主题的,假设 OP 确切地指定了使用 虚拟世界的需要。

对于我来说,答案是在启动 viralenv 的同时,在提示符下运行以下命令:

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。如果没有,那么请记住,最好的和推荐的解决方案是使用: 后遗症应用程序

Ubuntu上,我只需要 postgres dev 包:

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

除了@bkev 和@andi 提供的答案,根据 Postgre.app 上的 文件,你应该在 Mac 上的 bash _ profile 中添加以下内容:

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

Note that, there is no hard-coded version number. I wanted to add this as a comment to above answers, but I don't have enough rep for this.

如果您使用 postgreql 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/

For OS X El Capitan (10.11.6) + brew + virtualenv + PostgreSQL 9.5:

安装 PostgreSQL 9.5后:

brew install postgresql@9.5

Then, open your terminal and execute:

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

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

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

如果您不必特别使用 psycopg驱动程序,请切换到 pg8000驱动程序。它是纯粹的巨蟒,不那么挑剔。

必须配置 path postgreql:

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

after, you must install requirements:

pip3 install -r requirements
pip install psycopg2-binary

Binary install will work in virtual env, it Will have lib files necessary to work in virtual environment

我添加到 $PATH postgres,但有类似的问题。在 Dockerfile 进行更改并通过 bin/sh 安装之后,安装通过。它也可以与巨蟒阿尔卑斯版本的链接。非高山版本在安装过程中没有任何问题。

# syntax=docker/dockerfile:1
FROM python:3.11-rc-alpine
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN  #pip install --upgrade pip
RUN /bin/sh -c pip install -r requirements.txt
RUN #pip install -r requirements.txt
COPY . /code/