我在安装psycopg2时遇到了麻烦。当我尝试pip安装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'.

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build/psycopg2

但问题是pg_config实际上在我的PATH中;它运行起来没有任何问题:

$ which pg_config
/usr/pgsql-9.1/bin/pg_config

我尝试将pg_config路径添加到setup.cfg文件中,并使用我从他们的网站(http://initd.org/psycopg/)下载的源文件构建它,我得到了以下错误消息!

Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'

但它确实在那里!!

我对这些错误感到困惑。有人能帮忙吗?

顺便说一下,我sudo所有的命令。而且我使用的是RHEL 5.5。


当前回答

如果你最近更新了python或更改了默认的python(比如从3.6到3.8)。下面的代码

sudo apt-get install python-dev   OR    sudo apt-get install python3-dev

将安装/工作于以前的python版本。

因此,如果您希望此命令适用于最近更新/更改的python版本,请尝试在以下命令中提到特定版本,如python3.8

sudo apt-get install python3.8-dev  

尝试以下内容

pip install wheel
export PATH=/path/to/compiled/postgresql/bin:"$PATH"
sudo apt-get install libpq-dev
sudo apt-get install python3.x-dev    **Change x with your version, eg python3.8**
pip install psycopg2-binary
pip install psycopg2

其他回答

对于CentOS/RedHat,确保/etc/alternatives/pgsql-pg_config是一个未断开的符号链接

对于那些运行OS X的人来说,这个解决方案对我来说是有效的:

1)安装postgresql .app:

http://www.postgresql.org/download/macosx/

2)然后打开终端并运行这个命令,将上面的{{version}}替换为Postgres的版本号:

导出路径= $路径:/应用程序/ Postgres.app /内容/版本/ {{version}} / bin

e.g.

导出路径= $路径:/应用程序/ Postgres.app /内容/版本/ 9.4 / bin

在MacOS上,最简单的解决方案是将正确的二进制文件进行符号链接,即在Postgres包下。

sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config

这是相当无害的,如果需要,所有应用程序都可以在系统范围内使用它。

安装postgresql-devel (centos6X)

PIP install psycopg2==2.5.2

同样在OSX上。安装postgres。应用程序从http://postgresapp.com/,但有同样的问题。

我在该应用程序的内容中找到了pg_config,并将dir添加到$PATH。

它在/Applications/ postgress .app/Contents/Versions/latest/bin。export PATH="/Applications/ postgress .app/Contents/Versions/latest/bin:$PATH"。