use*_*207 646 python pip psycopg2
我在安装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
Run Code Online (Sandbox Code Playgroud)
但问题pg_config实际上是在我的PATH; 它运行没有任何问题:
$ which pg_config
/usr/pgsql-9.1/bin/pg_config
Run Code Online (Sandbox Code Playgroud)
我尝试将pg_config路径添加到该setup.cfg文件并使用我从其网站(http://initd.org/psycopg/)下载的源文件构建它,我收到以下错误消息!
Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'
Run Code Online (Sandbox Code Playgroud)
但实际上它就是!!!
我对这些错误感到困惑.有人可以帮忙吗?
顺便说一句,我sudo所有的命令.我也在RHEL 5.5上.
Til*_*ann 664
pg_config在postgresql-devel(libpq-dev在Debian/Ubuntu,libpq-devel在Cygwin/Babun.)
aza*_*lea 314
在Mac OS X上,我使用自制软件包管理器解决了它
brew install postgresql
Run Code Online (Sandbox Code Playgroud)
the*_*raw 195
你安装了python-dev吗?如果您已经拥有,请尝试安装libpq-dev
sudo apt-get install libpq-dev python-dev
Run Code Online (Sandbox Code Playgroud)
小智 89
对于 ubuntu 用户,这是解决方案:
sudo apt install libpq-dev
Run Code Online (Sandbox Code Playgroud)
这对我有用。
Tay*_*ler 64
也在OSX上.安装了来自http://postgresapp.com/的 Postgress.app,但遇到了同样的问题.
我pg_config在该应用程序的内容中找到并添加了dir $PATH.
它在/Applications/Postgres.app/Contents/Versions/latest/bin.所以这很有效:export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".
Jak*_*kub 64
您可以使用pip或在任何平台上安装预编译的二进制文件conda:
python -m pip install psycopg2-binary
Run Code Online (Sandbox Code Playgroud)
或者
conda install psycopg2
Run Code Online (Sandbox Code Playgroud)
请注意,psycopg2-binary pypi 页面建议在生产中从源代码构建:
二进制包是开发和测试的实用选择,但在生产中建议使用从源代码构建的包
要使用从源代码构建的包,请使用python -m pip install psycopg2. 该过程将需要几个依赖项(文档)(重点是我的):
- 交流编译器。
- 在Python的头文件。它们通常安装在一个包中,例如
python-dev. 诸如此类的消息error: Python.h: No such file or directory表示缺少 Python 标头。- 该libpq的头文件。它们通常安装在一个包中,例如
libpq-dev. 如果你得到一个,error: libpq-fe.h: No such file or directory你就会错过它们。- 该
pg_config程序:它通常是由安装的libpq-dev软件包,但有时它不是一个PATH目录。将其放入PATH大大简化了安装,因此请尝试运行pg_config --version:如果它返回错误或意外的版本号,则找到包含pg_config正确libpq版本(通常为/usr/lib/postgresql/X.Y/bin/)的目录并将其添加到PATH:Run Code Online (Sandbox Code Playgroud)$ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH您只需要
pg_configcompilepsycopg2,而不是常规使用。
一切就绪后,只需运行标准即可:
Run Code Online (Sandbox Code Playgroud)$ pip install psycopg2或者,从包含源代码的目录:
Run Code Online (Sandbox Code Playgroud)$ python setup.py build $ python setup.py install
rko*_*val 40
在高山上,包含的图书馆pg_config是postgresql-dev.要安装,请运行:
apk add postgresql-dev
Run Code Online (Sandbox Code Playgroud)
Ris*_*wal 39
我遇到这个问题是因为我没有安装 postgres。如果你有brew安装运行
brew install postgresql
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题。
Ali*_*ani 30
总而言之,我也遇到了完全相同的问题.在阅读了很多stackoverflow帖子和在线博客之后,对我有用的最终解决方案是这样的:
1)在安装psycopg2之前,应安装PostgreSQL(开发或任何稳定版本).
2)pg_config文件(此文件通常位于PostgreSQL安装文件夹的bin文件夹中)必须在安装psycopg2之前显式设置PATH.就我而言,PostgreSQL的安装路径是:
/opt/local/lib/postgresql91/
Run Code Online (Sandbox Code Playgroud)
所以为了显式设置pg_config文件的PATH,我在终端中输入了以下命令:
PATH=$PATH:/opt/local/lib/postgresql91/bin/
Run Code Online (Sandbox Code Playgroud)
此命令确保当您尝试pip install psycopg2时,它会自动找到PATH到pg_config.
我还在我的博客上发布了跟踪及其解决方案的完整错误,您可能想要参考.它适用于Mac OS X但pg_config PATH问题是通用的,也适用于Linux.
rad*_*tek 29
这对CentOS有用,首先安装:
sudo yum install postgresql postgresql-devel python-devel
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上只使用equivilent apt-get包.
sudo apt-get install postgresql postgresql-dev python-dev
Run Code Online (Sandbox Code Playgroud)
现在在你的pip install中包含postgresql二进制文件的路径,这应该适用于基于Debain或RHEL的Linux:
sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2
Run Code Online (Sandbox Code Playgroud)
确保包含正确的路径.就这样 :)
小智 24
您必须安装libpq-dev/postgresql-libs,它是用于编译 C 程序以与 libpq 库链接以便与 PostgreSQL 数据库后端通信的头文件和静态库。
在 Arch 上,这将运行:
$ sudo pacman -S postgresql-libs
Run Code Online (Sandbox Code Playgroud)
在 Debian 和 Ubuntu 上:
$ sudo apt-get install libpq-dev
Run Code Online (Sandbox Code Playgroud)
在 Mac OS X 上:
$ brew install postgresql
Run Code Online (Sandbox Code Playgroud)
在 Red Hat/CentOS/Fedora 上:
$ sudo yum install postgresql-devel
Run Code Online (Sandbox Code Playgroud)
小智 20
UPDATE /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
Run Code Online (Sandbox Code Playgroud)
Mil*_*ilo 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
例如
export PATH = $ PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
Mar*_*oni 16
尝试将其添加到PATH:
PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2
Run Code Online (Sandbox Code Playgroud)
小智 16
Ali的解决方案对我有用,但我无法找到bin文件夹位置.在Mac OS X上找到路径的快捷方法是打开psql(顶部菜单栏中有一个快速链接).这将打开一个单独的终端窗口,在第二行,Postgres安装的路径将如下所示:
My-MacBook-Pro:~ Me$ /Applications/Postgres93.app/Contents/MacOS/bin/psql ; exit;
Run Code Online (Sandbox Code Playgroud)
您的pg_config文件位于该bin文件夹中.因此,在安装psycopg2之前设置pg_config文件的路径:
PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin/
Run Code Online (Sandbox Code Playgroud)
或者对于较新版本:
PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin
Run Code Online (Sandbox Code Playgroud)
然后安装psycopg2.
Asw*_*win 10
在安装psycopg2之前,您需要升级您的点.使用此命令
pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)
刚解决了Cent OS 7中的问题:
export PATH=$PATH:/usr/pgsql-9.5/bin
Run Code Online (Sandbox Code Playgroud)
确保您的PostgreSql版本与上面的版本匹配.
在Mac OS X上,如果您使用的是Postgres App(http://postgresapp.com/):
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Run Code Online (Sandbox Code Playgroud)
无需在此命令中指定Postgres的版本。它将始终指向最新。
并做
pip install psycopg2
Run Code Online (Sandbox Code Playgroud)
PS:如果更改未反映出您可能需要重新启动终端/命令提示符
Windows 用户缺乏答案。这是我解决这个问题的方法。
\n首先将 PostgreSQL bin 文件夹添加到路径变量中,如下所示
\nset PATH=%PATH%;C:\\Program Files\\PostgreSQL\\11\\bin\nRun Code Online (Sandbox Code Playgroud)\n代替\\11\\为您的 Postgres 版本
下一次运行
\npip install pyscopg2\nRun Code Online (Sandbox Code Playgroud)\n这至少让我遇到了编译错误。
\n更新:这看起来是 psycopg2 库的问题,它\xe2\x80\x99s 依赖项与 python 3.8 不能很好地配合。https://github.com/psycopg/psycopg2/issues/990
\n我建议您尝试使用 Postgres.app。( http://postgresapp.com ) 这样您就可以轻松地在 Mac 上打开和关闭 Postgres。完成后,通过附加以下内容将 Postgres 的路径添加到您的 .profile 文件中:
PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
只有将 Postgres 添加到路径后,您才能尝试在虚拟环境中(使用 pip)或全局站点包中安装 psycopg2。
小智 7
这是之前部分建议的,为了清楚起见,将其添加到此处。
来自https://www.psycopg.org/docs/install.html 上的文档。
他们建议运行: $ pip install psycopg2-binary
那为我解决了这个问题。
在MacOS上,最简单的解决方案是将正确的二进制文件符号链接到Postgres软件包下。
sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Run Code Online (Sandbox Code Playgroud)
这是相当无害的,并且如果需要,所有应用程序都可以在系统范围内使用它。
这里,对于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毫无问题地运行.
安装python-psycopg2在Arch Linux上为我解决了这个问题:
pacman -S python-psycopg2
Run Code Online (Sandbox Code Playgroud)
对于那些在 macOS Catalina 上使用zshshell 并且还安装了postgres 应用程序的人:
打开您的~/.zshrc文件,并添加以下行:
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
然后关闭所有终端,重新打开它们,您将解决您的问题。
如果您不想关闭终端,只需输入source ~/.zshrc您想继续使用的任何终端即可。
如果您尝试psycopg2在虚拟环境中添加依赖项,以允许您的 python 项目连接到 Mac 上单独运行 postgresql 的 docker 或 kubernetes pod,并且对在 Mac 上安装 postgresql 并不真正感兴趣,这样您就可以在 Mac 上安装postgresql。可以获取 pg_config,这就是你要做的:
按照 Pipenv 安装的错误输出中的建议进行安装psycopg2_binary,一切都会正常进行。
小智 5
运行以下命令来解决找不到pg_config 可执行文件的问题:-
sudo apt-get install --reinstall libpq-dev
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
428754 次 |
| 最近记录: |