我在安装 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 上。
sudo
运行命令时,$PATH
会更改。您能否以 root 身份仔细检查您的 $PATH ?
ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_config
并且一切正常!
pg_config
在 postgresql-devel
中(在 Debian/Ubuntu 中为 libpq-dev
,在 Centos/Fedora/Cygwin/Babun 中为 libpq-devel
。)
在 Mac OS X 上,我使用 homebrew 包管理器解决了这个问题
brew install postgresql
brew
命令工作。
brew link postgresql
homebrew
。
您安装了 python-dev
吗?如果您已经安装了,请尝试同时安装 libpq-dev
sudo apt-get install libpq-dev python-dev
来自文章:How to install psycopg2 under virtualenv
Python.h: No such file or directory
apt-get install -y gcc
也在 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"
。
PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
您可以使用 pip
或 conda
在任何平台上安装预编译的二进制文件:
python -m pip install psycopg2-binary
或者
conda install psycopg2
请注意,psycopg2-binary pypi page 建议在生产环境中从源代码构建:
二进制包是开发和测试的实用选择,但在生产中建议使用从源代码构建的包
要使用从源代码构建的包,请使用 python -m pip install psycopg2
。该过程将需要几个依赖项 (documentation)(强调我的):
交流编译器。 Python 头文件。它们通常安装在诸如 python-dev 之类的包中。诸如 error: Python.h: No such file or directory 之类的消息表明缺少 Python 标头。 libpq 头文件。它们通常安装在 libpq-dev 等软件包中。如果您收到错误消息:libpq-fe.h: No such file or directory 您缺少它们。 pg_config 程序:它通常由 libpq-dev 包安装,但有时它不在 PATH 目录中。将它放在 PATH 中大大简化了安装,因此尝试运行 pg_config --version:如果它返回错误或意外的版本号,则找到包含正确 libpq 版本附带的 pg_config 的目录(通常是 /usr/lib/postgresql/ XY/bin/) 并将其添加到 PATH: $ export PATH=/usr/lib/postgresql/XY/bin/:$PATH 您只需要 pg_config 来编译 psycopg2,而不是常规使用。
一旦一切就绪,只需运行标准: $ pip install psycopg2 或者,从包含源代码的目录中: $ python setup.py build $ python setup.py install
apt install libpq-dev
这是在 CentOS 上对我有用的方法,首先安装:
sudo yum install postgresql postgresql-devel python-devel
在 Ubuntu 上,只需使用等效的 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
确保包含正确的路径。就这样 :)
sudo apt-get install postgresql postgresql-dev python-dev
,这对我有用。
gcc
和 python3-devel。
对于 ubuntu 用户,这是解决方案:
sudo apt install libpq-dev
它对我有用。
postgresql-libs
apt-get build-dep python-psycopg2
总结一下,我也面临完全相同的问题。在阅读了很多 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 install psycopg2 时,它会自动找到 pg_config 的 PATH。
我还在我的 blog 上发布了有关跟踪的完整错误及其解决方案,您可能想参考。它适用于 Mac OS X,但 pg_config PATH 问题是通用的,也适用于 Linux。
PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
您应该在 Ubuntu 上添加 Postgres 中使用的 python 要求。跑:
sudo apt-get install libpq-dev python-dev
您必须安装 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
在 Linux Mint sudo apt-get install libpq-dev
上为我工作。
更新 /etc/yum.repos.d/CentOS-Base.repo、[base] 和 [updates] 部分添加 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
对于那些运行 OS X 的人来说,这个解决方案对我有用:
1) 安装 Postgres.app:
http://www.postgresql.org/download/macosx/
2) 然后打开终端并运行此命令,将 {{version}} 替换为 Postgres 版本号:
导出 PATH=$PATH:/Applications/Postgres.app/Contents/Versions/{{version}}/bin
例如
导出 PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
我遇到了这个问题,因为我没有安装 postgres。如果你有 brew install 运行
brew install postgresql
这应该可以解决问题。
只需运行以下命令:
sudo apt install libpq-dev
为我解决了这个问题
尝试将其添加到 PATH:
PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2
-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory
/usr/pgsql-x.x/bin/
是正确的吗?
pg_
文件所在的文件夹就足够了。对于 postgres.app,Mac OS X 上的此路径是 /Applications/Postgres.app/Contents/Versions/9.3/bin
。 PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin
如果有新版本发布,请更新您的版本*!
PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
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。
/Applications/Postgres.app/Contents/Versions/9.3/bin
find /usr/local -name 'pg_config'
我将把它留给下一个不幸的灵魂,尽管提供了所有解决方案,但他们仍无法解决这个问题。只需使用 sudo pip3 install psycopg2-binary
brew install postgresql
修复了它。
pip install psycopg2-binary
:pip -> python2,pip3->蟒蛇3。但只要你让它工作,它就是众多解决方案之一!
在安装 psycopg2 之前,您需要升级您的 pip。使用此命令
pip install --upgrade pip
在 MacOS 上,最简单的解决方案是对 Postgres 包下的正确二进制文件进行符号链接。
sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
这是相当无害的,如果需要,所有应用程序都可以在系统范围内使用它。
sudo ln -s /Library/PostgreSQL/13/bin/pg_config /usr/local/bin/pg_config
在 Mac OS X 上并且如果您使用 Postgres 应用程序 (http://postgresapp.com/):
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
无需在此命令中指定 Postgres 的版本。它总是指向最新的。
做
pip install psycopg2
PS:如果更改没有反映您可能需要重新启动终端/命令提示符
在 Arch Linux 上安装 python-psycopg2 为我解决了这个问题:
pacman -S python-psycopg2
刚刚通过以下方式解决了 Cent OS 7 中的问题:
export PATH=$PATH:/usr/pgsql-9.5/bin
确保您的 PostgreSql 版本与上面的正确版本匹配。
这部分是之前提出的,为了清楚起见,在此处添加。
根据 https://www.psycopg.org/docs/install.html 的文档。
他们建议运行:$ pip install psycopg2-binary
这为我解决了这个问题。
在这里,为了 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
。
致那些在 macOS Catalina 上使用 zsh
shell 并且还安装了 postgres app 的用户:
打开您的 ~/.zshrc
文件,然后添加以下行:
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
然后关闭所有终端,重新打开它们,您的问题就解决了。
如果您不想关闭终端,只需在您想要继续工作的任何终端中输入 source ~/.zshrc
。
不定期副业成功案例分享
libpq-dev
后解决。先感谢您。pg_config
位于/Applications/Postgres.app/Contents/Versions/<your version>/bin
(Mac OS X)libpqxx-devel
。sudo apt-get install libpq-dev
在 Ubuntu 上为我工作