我在安装psycopg2时遇到问题。当我尝试pip install 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上。
答案 0 :(得分:567)
pg_config
位于postgresql-devel
(Debian / Ubuntu为libpq-dev
,Cygwin / Babun为libpq-devel
。)
答案 1 :(得分:243)
在Mac OS X上,我使用homebrew包管理器
解决了这个问题brew install postgresql
答案 2 :(得分:161)
你安装了python-dev吗? 如果您已经有,请尝试安装libpq-dev
sudo apt-get install libpq-dev python-dev
答案 3 :(得分:58)
同样在OSX上。从http://postgresapp.com/安装了Postgress.app,但遇到了同样的问题。
我在该应用的内容中找到pg_config
,并将目录添加到$PATH
。
那是/Applications/Postgres.app/Contents/Versions/latest/bin
。所以这很有效:export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
。
答案 4 :(得分:36)
在alpine上,包含pg_config
的库是postgresql-dev
。要安装,请运行:
apk add postgresql-dev
答案 5 :(得分:36)
apt-get build-dep python-psycopg2
答案 6 :(得分:29)
总结一下,我也遇到了完全相同的问题。在阅读了很多stackoverflow帖子和在线博客之后,对我有用的最终解决方案是:
1)在安装psycopg2之前,应安装PostgreSQL(开发版或任何稳定版)。
2)pg_config文件(此文件通常位于PostgreSQL安装文件夹的bin文件夹中)必须在安装psycopg2之前显式设置PATH。在我的例子中,PostgreSQL的安装路径是:
/opt/local/lib/postgresql91/
所以为了显式设置pg_config文件的PATH,我在终端中输入了以下命令:
PATH=$PATH:/opt/local/lib/postgresql91/bin/
此命令确保当您尝试pip install psycopg2时,它会自动找到PATH到pg_config。
我还在我的blog上发布了跟踪及其解决方案的完整错误,您可能希望参考该错误。它适用于Mac OS X但pg_config PATH问题是通用的,也适用于Linux。
答案 7 :(得分:26)
sudo apt-get install libpq-dev
在Ubuntu 15.4上为我工作
答案 8 :(得分:22)
您必须安装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
答案 9 :(得分:21)
这对CentOS有用,首先安装:
sudo yum install postgresql postgresql-devel python-devel
在Ubuntu上只使用equivilent apt-get软件包。
sudo apt-get install postgresql postgresql-dev python-dev
现在在你的pip install中包含你的postgresql二进制文件的路径,这应该适用于基于Debain或RHEL的Linux:
sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2
确保包含正确的路径。多数民众赞成:)
答案 10 :(得分:19)
更新/etc/yum.repos.d/CentOS-Base.repo, [base]和[updates]部分
ADD exclude = postgresql *
curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpmr
rpm -ivh pgdg-centos91-9.1-4.noarch.rpm
yum install postgresql
yum install postgresql-devel
PATH=$PATH:/usr/pgsql-9.1/bin/
pip install psycopg2
答案 11 :(得分:18)
对于那些运行OS X的人来说,这个解决方案对我有用:
1)安装Postgres.app:
http://www.postgresql.org/download/macosx/
2)然后打开终端并运行此命令,用Postgres版本号替换{{version}}所在的位置:
export PATH = $ PATH:/Applications/Postgres.app/Contents/Versions / {{version}} / bin
e.g。
export PATH = $ PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
答案 12 :(得分:17)
On Linux Mint sudo apt-get install libpq-dev
为我工作。
答案 13 :(得分:16)
Ali的解决方案对我有用,但我找不到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。
答案 14 :(得分:15)
只需运行以下命令:
sudo apt install libpq-dev
帮我解决了这个问题
答案 15 :(得分:15)
尝试将其添加到PATH:
PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2
答案 16 :(得分:10)
您需要在安装psycopg2之前升级您的点。使用此命令
pip install --upgrade pip
答案 17 :(得分:9)
通过以下方式解决了Cent OS 7中的问题:
export PATH=$PATH:/usr/pgsql-9.5/bin
确保您的PostgreSql版本与上面的版本匹配。
答案 18 :(得分:9)
我将把这个留给下一个不幸的灵魂,尽管所有提供的解决方案都无法解决这个问题。只需使用sudo pip3 install psycopg2-binary
答案 19 :(得分:8)
这对我有用:
ivFoodImage2?.let{
it.setImageResource(image)
}
答案 20 :(得分:7)
在Windows上, 您可能需要安装Windows port of Psycopg中推荐的psycopg's documentation。
答案 21 :(得分:6)
以前曾部分建议过,为清楚起见在此添加。
摘自https://www.psycopg.org/docs/install.html上的文档。
他们建议运行:$ pip install psycopg2-binary
那为我解决了这个问题。
答案 22 :(得分:6)
在MacOS上,最简单的解决方案是将正确的二进制文件符号链接到Postgres软件包下。
sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
这是相当无害的,并且如果需要,所有应用程序都可以在系统范围内使用它。
答案 23 :(得分:5)
这里,对于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
现在pip install psycopg2
可以毫无问题地运行pg_config
。
答案 24 :(得分:5)
在Mac OS X上,如果您使用的是Postgres App(http://postgresapp.com/):
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
无需在此命令中指定Postgres的版本。它总是指向最新的。
并做
pip install psycopg2
P.S:如果更改未反映您可能需要重新启动终端/命令提示
答案 25 :(得分:5)
运行以下命令来解决 pg_config executable not found:-
sudo apt-get install --reinstall libpq-dev
答案 26 :(得分:5)
sudo yum install postgresql-devel(centos6X)
pip install psycopg2 == 2.5.2
答案 27 :(得分:4)
如果您试图在虚拟环境中添加psycopg2
依赖关系,这将允许您的python项目连接到在Mac上单独运行PostgreSQL的docker或kubernetes pod,并且对安装并没有真正的兴趣在Mac just 上使用postgresql,以便获取pg_config,这是您要做的:
根据pipenv安装错误输出中的建议安装psycopg2_binary
,一切正常。
答案 28 :(得分:4)
我建议您尝试使用Postgres.app。 (http://postgresapp.com)这样,您可以轻松地在Mac上打开和关闭Postgres。完成后,通过添加以下内容,将Postgres的路径添加到您的.profile文件中:
PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
仅在将Postgres添加到路径后,您才可以尝试在虚拟环境中(使用pip)或全局站点软件包中安装psycopg2。
答案 29 :(得分:4)
您可以使用pip
或conda
在任何平台上安装预编译的二进制文件:
pip install psycopg2-binary
或
conda install psycopg2
请注意,psycopg2-binary pypi page建议在生产中从源构建:
二进制包是开发和测试的实际选择,但在生产中,建议使用从源代码构建的包
答案 30 :(得分:4)
对于Mac用户,扩展您的path变量以包括export PATH=$PATH:/Library/PostgreSQL/12/bin
这样的PostgreSQL。
答案 31 :(得分:2)
这就是我设法安装psycopg2
的方法$ wget http://initd.org/psycopg/tarballs/PSYCOPG-2-5/psycopg2-2.5.3.tar.gz
$ tar -xzf psycopg2-2.5.3.tar.gz
$ cd psycopg2-2.5.3
$ python setup.py install
答案 32 :(得分:1)
对于CentOS / RedHat,请确保/etc/alternatives/pgsql-pg_config
是一个未破坏的符号链接
答案 33 :(得分:1)
对于 MAC 用户 -
通过 HomeBrew 添加 postgresql
包后,您可能需要添加 openssl
路径变量 -
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
然后您可以再次pip install
应该可以工作的psycopg2
包。
答案 34 :(得分:1)
以下步骤为我解决了这个问题(ubuntu 18.04)
sudo apt-get install libpq-dev
答案 35 :(得分:1)
Windows用户缺少答案。这是我解决此问题的方法。
首先将PostgreSQL bin文件夹添加到像这样的路径变量中
startDate
用您的Postgres版本替换endDate
下次运行
set PATH=%PATH%;C:\Program Files\PostgreSQL\11\bin
这至少使我陷入了编译错误。
更新:psycopg2库似乎是一个问题,其依赖项在python 3.8中的运行效果不佳。 https://github.com/psycopg/psycopg2/issues/990
答案 36 :(得分:1)
对于在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将从项目根目录下名为“ .ebextensions”的文件夹中读取自定义.config文件。这些.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。
答案 37 :(得分:1)
在Arch Linux上安装python-psycopg2
为我解决了这个问题:
pacman -S python-psycopg2
答案 38 :(得分:1)
On Gentoo你必须执行以下
# Install postgresql client libraries
sudo emerge postgresql-base
答案 39 :(得分:1)
我很确定你经历过同样的问题"我做到了,因此我会为您提供极其简单的解决方案......
在您的情况下,您需要添加到$ PATH(或作为命令参数)的实际路径是:
/usr/pgsql-9.1/bin/pg_config
不
/usr/pgsql-9.1/bin
E.g。如果你之后运行python setup.py脚本,你可以像这样运行它:
python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
可能为时已晚,但仍然是最简单的解决方案。
LATER EDIT:
在进一步测试中,我发现如果您最初以
的形式添加pg_config的路径/usr/pgsql-9.1/bin
(在..... / bin之后没有/ pg_config)并运行pip install命令它将起作用。
但是,如果您决定按照指示运行python setup.py,则必须在..... / bin之后使用/ pg_config指定路径,即
python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
答案 40 :(得分:0)
我通过运行以下命令解决了这个问题。
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2
答案 41 :(得分:0)
快速了解pip的工作原理pip
-> python2和pip3
-> python3,因此,如果您要在python 3上解决此问题,可以简单地sudo pip3 install psycopg2
工作,也许。
答案 42 :(得分:0)
一个简单的解决方案可以是
pip install psycopg2==2.7.5
答案 43 :(得分:0)
对于使用zsh
shell且已安装postgres app的macOS Catalina上的用户:
打开您的~/.zshrc
文件,并添加以下行:
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
然后关闭所有终端,重新打开它们,您将解决问题。
如果您不想关闭终端,只需在要继续使用的任何终端上输入source ~/.zshrc
。
答案 44 :(得分:0)
如果您使用的是Mac,请确保已在计算机上安装了Postgresql。
答案 45 :(得分:0)
您可以改用二进制文件,当Django尝试将其作为依赖项的一部分进行安装时,我遇到了将应用程序进行docker化的问题,为解决此问题,我将此设置用于requirements.txt,其中先安装了二进制文件,然后django不会尝试再次安装它: psycopg2-binary 詹戈 金枪鱼
答案 46 :(得分:0)
如果您最近更新了 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
答案 47 :(得分:0)
我发现这个页面提供了在我的mac上安装PostgreSQL的最佳说明,之后pip install命令运行良好:
https://www.codefellows.org/blog/three-battle-tested-ways-to-install-postgresql
答案 48 :(得分:0)
我遇到这个问题是因为我没有安装 postgres。如果你有 brew install 运行
brew install postgresql
这应该可以解决问题。
答案 49 :(得分:-1)
Windows:
PATH:C:\ Program Files \ PostgreSQL \ 9.5 \ bin;
答案 50 :(得分:-2)
在MAC Mojave上,如果已使用brew安装它,则执行
brew info <your postgres>
它将显示您应设置的所有环境变量,只需复制粘贴这些命令,然后重新启动外壳即可!