我在安装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。
综上所述,我也遇到了同样的问题。在阅读了大量stackoverflow的帖子和在线博客后,最终对我有效的解决方案是:
1)在安装psycopg2之前,应该先安装PostgreSQL(开发版或任何稳定版)。
2) pg_config文件(该文件通常位于PostgreSQL安装文件夹的bin文件夹中)PATH必须在安装psycopg2之前显式设置。在我的例子中,PostgreSQL的安装路径是:
/opt/local/lib/postgresql91/
所以为了显式地设置pg_config文件的PATH,我在我的终端输入了以下命令:
PATH=$PATH:/opt/local/lib/postgresql91/bin/
该命令确保当您尝试pip安装psycopg2时,它这次将自动找到pg_config的PATH。
我还在我的博客上发布了一个完整的错误跟踪和解决方案,你可能想要参考。它适用于Mac OS X,但pg_config PATH问题是通用的,也适用于Linux。
阿里的解决方案为我工作,但我有麻烦找到bin文件夹的位置。在Mac OS X上找到路径的一个快速方法是打开psql(在顶部菜单栏中有一个快速链接)。这将打开一个单独的终端窗口,在第二行中,Postgres的安装路径将如下所示:
My-MacBook-Pro:~ Me$ /Applications/Postgres93.app/Contents/MacOS/bin/psql ; exit;
您的pg_config文件在bin文件夹中。因此,在安装psycopg2之前,设置pg_config文件的路径:
PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin/
或更新版本:
PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin
然后安装psycopg2。
我很确定你也经历过和我一样的“问题”,因此我将为你提供一个极其简单的解决方案……
在你的例子中,你需要添加到$ path(或作为命令参数)的实际路径是:
/usr/pgsql-9.1/bin/pg_config
not
/usr/pgsql-9.1/bin
例如,如果你随后运行python setup.py脚本,你会像这样运行它:
python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
也许太晚了,但仍然是最简单的解决办法。
后来编辑:
在进一步的测试中,我发现如果最初在表单中添加路径到pg_config
/usr/pgsql-9.1/bin
(...../bin后面没有/pg_config)并运行PIP install命令,它将工作。
然而,如果你决定按照指示运行python setup.py,你必须在.....之后用/pg_config指定路径/ bin。
python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
对于那些运行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
这里,为了OS X的完整性:如果你从MacPorts安装PostgreSQL, pg_config将在/opt/local/lib/postgresql94/bin/pg_config。
当你安装MacPorts时,它已经将/opt/local/bin添加到你的PATH中。
所以,这将解决问题:
$ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config . sh /opt/local/bin/pg_config . sh
现在pip install psycopg2将能够毫无问题地运行pg_config。
对于任何在Django应用程序中遇到这个问题并将其部署到AWS的人来说,本教程中描述的方法对我来说是有效的:https://realpython.com/deploying-a-django-app-and-postgresql-to-aws-elastic-beanstalk/
下面是作者对出现以下错误的解释:
Error: pg_config executable not found.
问题是我们试图安装psycopy2 (Postgres Python绑定),但我们还需要安装Postgres客户端驱动程序。因为默认情况下没有安装它们,所以我们需要先安装它们。
Eb将从名为“。”的文件夹中读取自定义的。config文件。Ebextensions”在项目的根级别。这些.config文件允许您安装包,运行任意命令和/或设置环境变量。文件中的。ebextensions”目录应该符合JSON或YAML语法,并按字母顺序执行。
首先要做的是安装一些包,以便pip install命令能够成功完成。为此,让我们创建一个名为.ebextensions/01_packages.config的文件:
packages:
yum:
git: []
postgresql93-devel: []
libjpeg-turbo-devel: []
EC2实例运行Redhat版本的Amazon Linux,因此我们可以使用yum来安装所需的包。现在,我们只安装三个包——git、Postgres客户端和Pillow的libjpeg。
你可以使用pip或conda在任何平台上安装预编译的二进制文件:
python -m pip install psycopg2-binary
or
conda install psycopg2
请注意psycopg2-binary pypi页面建议在生产环境中从源代码构建:
二进制包是开发和测试的实际选择,但在生产中,建议使用从源代码构建的包
使用python -m pip install psycopg2可以使用从源代码构建的包。该过程将需要几个依赖项(文档)(强调我的):
一个C编译器。
Python头文件。它们通常安装在一个包中,例如python-dev。诸如error: Python.h: No such file或directory之类的消息表明Python头文件丢失。
libpq头文件。它们通常安装在libpq-dev之类的包中。如果您得到一个错误:libpq-fe.h:没有这样的文件或目录,那么您丢失了它们。
pg_config程序:通常由libpq-dev包安装,但有时不在PATH目录中。将它放在PATH中可以大大简化安装,所以尝试运行pg_config——version:如果它返回一个错误或一个意外的版本号,那么找到包含正确的libpq版本(通常是/usr/lib/postgresql/X.Y/bin/)的pg_config目录,并将其添加到PATH中:
$ export PATH=/usr/lib/postgresql/X。Y / bin /: $路径
您只需要pg_config来编译psycopg2,而不是用于它的常规使用。
一旦一切就绪,就只需要运行标准了:
$ PIP安装psycopg2
或者,从包含源代码的目录:
$ python setup.py编译
$ python setup.py install
如果你最近更新了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
你必须安装libpq-dev/ PostgreSQL -libs,这是编译C程序链接到libpq库的头文件和静态库,以便与PostgreSQL数据库后端通信。
在Arch上运行:
$ sudo pacman -S postgresql-libs
在Debian和Ubuntu上:
$ sudo apt-get install libpq-dev
在Mac OS X上:
$ brew install postgresql
在Red Hat/CentOS/Fedora上:
$ sudo yum install postgresql-devel