ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Python 上使用“pip”安装 psycopg2?

我正在使用 virtualenv,我需要安装“psycopg2”。

我做了以下事情:

pip install http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160

我有以下消息:

Downloading/unpacking http://pypi.python.org/packages/source/p/psycopg2/psycopg2
-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
  Downloading psycopg2-2.4.tar.gz (607Kb): 607Kb downloaded
  Running setup.py egg_info for package from http://pypi.python.org/packages/sou
rce/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
    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'.
    Complete output from command python setup.py egg_info:
    running egg_info

creating pip-egg-info\psycopg2.egg-info

writing pip-egg-info\psycopg2.egg-info\PKG-INFO

writing top-level names to pip-egg-info\psycopg2.egg-info\top_level.txt

writing dependency_links to pip-egg-info\psycopg2.egg-info\dependency_links.txt

writing manifest file 'pip-egg-info\psycopg2.egg-info\SOURCES.txt'

warning: manifest_maker: standard file '-c' not found

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
Storing complete log in C:\Documents and Settings\anlopes\Application Data\pip\p
ip.log

我的问题,我只需要这样做就可以让 psycopg2 工作?

python setup.py build_ext --pg-config /path/to/pg_config build ...
当您尝试 python setup.py build_ext --pg-config /path/to/pg_config build ... 时它是否有效?
对于 python 3.4 或 python 3.5,您必须安装相应版本的开发包,如 sudo apt install libpq-dev python3.4-devsudo apt install libpq-dev python3.5-dev
psycopg2 删除它并将 psycopg2-binary 添加到依赖项文件并重试。

j
joar

注意:由于不久前,PyPI 中有适用于 Windows 的二进制轮子,因此这对 Windows 用户来说应该不再是问题。以下是针对 Linux、Mac 用户的解决方案,因为他们中的许多人通过网络搜索找到了这篇文章。

选项1

请安装 psycopg2-binary PyPI 包,它具有适用于 Linux 和 Mac OS 的 Python 轮子。

pip install psycopg2-binary

选项 2

安装用于从源代码构建 psycopg2 软件包的先决条件:

Debian/Ubuntu

蟒蛇 3

sudo apt install libpq-dev python3-dev

对于 Python 3.8,您可能需要安装 python3.8-dev 或类似软件。

蟒蛇2

sudo apt install libpq-dev python-dev

如果这还不够,请尝试

sudo apt install build-essential

或者

sudo apt install postgresql-server-dev-all

以及再次安装 psycopg2 之前。

中央操作系统 6

请参阅Banjer's answer

苹果系统

请参阅nichochar's answer


11.04:不同的错误,相同的解决方案。崇拜开发版本!
@I159 - *-dev 包包含编译使用库提供的函数的应用程序从源代码 所需的文件(因为 psycopg2 使用 libpqpython 库,其中其他)。
我使用的是 Ubuntu 12.04 LTS,而且我还必须sudo apt-get install postgresql-server-dev-all
有人可以解释为什么不只是包含 pg_config 的目录到 PATH(或使用 --pg-config)吗?
如果您在这里是因为无法从 Dockerhub 将 psycopg2 安装到 python 3 Celery 容器中,您还需要使用 sudo apt-get install -y build-essential 安装 build-essential
A
Andomar

在 CentOS 上,您需要 postgres 开发包:

sudo yum install python-devel postgresql-devel

这至少是 CentOS 6 上的解决方案。


我认为这不仅仅是 CentOS。 psycopg 具有本机依赖项,因此要从源代码构建(这就是 pip 所做的),PostgreSQL 开发库需要在那里。 (也许是 C 头文件?我对编译本机代码知之甚少。)
我同意这解决了 CentOS 6 上的问题。我想补充一点,我确实必须将 /usr/pgsql-9.3/bin 添加到 $PATH。这是一篇文章,提供了如何做到这一点的示例。 serverfault.com/questions/102932/…
对于 CentOS 7 和 Python 3.4,我必须安装“python34-devel”。我对相关问题的回答:stackoverflow.com/a/42370489/26219
在 AWS EC2 上工作,使用基于 RHEL 的 64 位 Amazon Linux/2.5.1
对于 Fedora 中的 Python3,请使用 sudo yum install python36-devel(将 36 替换为您的 Python 3 版本)。
n
nichochar

如果您使用的是 Mac,则可以使用自制软件

brew install postgresql

所有其他选项都在这里:http://www.postgresql.org/download/macosx/

祝你好运


nichochar 的回答和 attomos 的回答(安装 postgresql 并修改路径)一起为我解决了这个问题。编辑路径的最简单方法是从终端运行“sudo nano /etc/path”。
这次真是万分感谢。在我发现这个之前,我快要发疯了!
也为我工作,无需在我的路径上胡思乱想(通常,我不建议在这里使用 sudo - 你应该能够在用户空间中执行此操作)。
这不会像 OP 要求的那样在 virtualenv 中安装 postgresql。
我认为 OP 不一定需要 virtualenv 中的 postgres。他说他正在使用virtualenv。我认为他误解了 postgresql 是一个比简单的 python 库更大的服务。
m
metasequoia

在带有 Postgres.app 版本 9.3.2.0 RC2 的 Mac Mavericks 上,我需要在安装 Postgres 后使用以下代码:

sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2


sudo PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin pip install psycopg2 [截至 2014 年 4 月 5 日]
如果您使用的是 virtualenv,则不需要“sudo”,因此请激活您的 virtualenv 并运行“PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2”
我的案例 OS X Ver 10.9.4:sudo PATH=$PATH:/Library/PostgreSQL/9.2/bin pip install psycopg2
是的,这也对我有用。安装 PostgreSQL 后,我必须通过执行 PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2 来设置路径。
使用最新版本:PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2
j
jpmc26

我最近在 Windows 机器上配置了 psycopg2。最简单的安装是使用 Windows 可执行二进制文件。您可以在 http://stickpeople.com/projects/python/win-psycopg/ 找到它。

要在虚拟环境中安装本机二进制文件,请使用 easy_install:

C:\virtualenv\Scripts\> activate.bat
(virtualenv) C:\virtualenv\Scripts\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe

谢谢回复。但我需要安装到虚拟环境。最良好的问候,
这个 trick(由 Ned Batchelder 提供)过去曾帮助我从二进制文件安装到 virtualenv
真的没有办法让“pip install psycopg2”在 Windows 上运行吗?即使 psycopg2 的补丁是必要的,它也是值得的。
当我的机器上未安装 postgres 时出现此错误 - 我安装了 postgres 并且错误消失了...
stickpeople 链接还讨论了虚拟环境并指向 pip 安装版本 github.com/nwcell/psycopg2-windows
A
André

对于 Python 3,您应该在 Debian 下使用 sudo apt-get install libpq-dev python3-dev


r
radtek

这对我有用(在 RHEL、CentOS 上:

sudo yum install postgresql postgresql-devel python-devel

现在在 pip install 中包含 postgresql 二进制目录的路径:

sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2

确保包含正确的路径。就这样 :)

更新:对于 python 3,请安装 python3-devel 而不是 python-devel


请注意,我不需要更新 PATH 环境变量。
如果您重新加载终端会话,则不必这样做。
非常感谢。
如果您使用的是 Python 3,则需要安装编号的 Python 开发包。请参阅:stackoverflow.com/a/42370489/26219
M
Michael Dillon

到目前为止的答案太像魔术食谱了。您收到的错误告诉您 pip 找不到 PostgreSQL 查询库的所需部分。这可能是因为您将它安装在操作系统的非标准位置,这就是消息建议使用 --pg-config 选项的原因。

但更常见的原因是您根本没有安装 libpq。这通常发生在您没有安装 PostgreSQL 服务器的机器上,因为您只想运行客户端应用程序,而不是服务器本身。每个操作系统/发行版都不同,例如在 Debian/Ubuntu 上,您需要安装 libpq-dev。这允许您针对 PostgreSQL 查询库编译和链接代码。

大多数答案还建议安装 Python 开发库。当心。如果您只使用发行版安装的默认 Python,那将起作用,但如果您有较新的版本,则可能会导致问题。如果您在这台机器上构建了 Python,那么您已经拥有编译 C/C++ 库以与 Python 交互所需的开发库。只要您使用正确的 pip 版本,即安装在与 python 二进制文件相同的 bin 文件夹中的 pip 版本,那么您就一切就绪。无需安装旧版本。


关于Os x?我的意思是,基于 Unix,但我认为可以不同。
a
attomos

如果你使用 Mac OS,你应该从源代码安装 PostgreSQL。安装完成后,您需要使用以下命令添加此路径:

export PATH=/local/pgsql/bin:$PATH

或者您可以像这样附加路径:

export PATH=.../:usr/local/pgsql/bin

在您的 .profile 文件或 .zshrc 文件中。

这可能因操作系统而异。

您可以按照 http://www.thegeekstuff.com/2009/04/linux-postgresql-install-and-configure-from-source/ 中的安装过程进行操作


为什么来自源而不是 Homebrew?
@duozmo 它在 2012 年得到了回答,我相信当时我确实尝试使用 Homebrew 安装它,但它失败了。现在,我已经使用 Homebrew 安装了 PostgreSQL,没有任何问题。
O
Omid Raha

Debian/Ubuntu

首先安装和构建 psycopg2 包的依赖项:

# apt-get build-dep python-psycopg2

然后在您的虚拟环境中,编译并安装 psycopg2 模块:

(env)$ pip install psycopg2

X
Xeoth

运行以下命令,你应该没问题

$ apt-get update
$ apt install python3-dev libpq-dev
$ pip3 install psycopg2

m
monkut

在您首先在 Windows 中安装到基本 python 安装的位置之前,我已经这样做了。

然后,手动将安装的 psycopg2 复制到 virtualenv 安装。

它不漂亮,但它有效。


你能详细说明一下吗?你首先从哪里得到 psycopg2?
Windows 二进制文件可在 stickpeople.com/projects/python/win-psycopg 获得
在筋疲力尽的日子和网上描述的所有其他选项之后,我也这样做了。我仍然对是什么阻止它在 venv 中使用 pip 安装感到目瞪口呆。我能够在虚拟环境之外安装,没问题。然后,我从我的 Python 包库目录中复制了该文件,并将其粘贴到 venv 中。我的预感是,因为我的 Python 版本是 Anaconda 发行版,所以假设/使用的路径有问题。
G
Gino

在安装 psycopg2 之前,您需要安装 python-dev 包。

如果您在 Linux 上工作(可能还有其他系统,但我不能根据经验说话),您需要确保在安装开发包时非常准确地了解您运行的 python 版本。

例如,当我使用命令时:

sudo apt-get install python3-dev

尝试时我仍然遇到同样的错误

pip install psycopg2

当我使用python 3.7时,我需要使用命令

sudo apt-get install python3.7-dev

一旦我这样做了,我就不再遇到问题了。显然,如果您在 python 版本 3.5 上,您会将 7 更改为 5。


这应该是答案,sudo apt-get install python-x.x-dev 解决了这个问题。
x
xtranophilist

除了安装所需的软件包,我还需要手动将 PostgreSQL bin 目录添加到 PATH。
$vi ~/.bash_profile
export PATH 之前添加 PATH=/usr/pgsql-9.2/bin:$PATH
$source ~/.bash_profile
$pip install psycopg2


知道为什么这不会出现在默认路径中吗?
我遇到了这样的错误如何纠正这个请帮助我!!!命令 "/usr/bin/python -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-AUbwwG/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open )(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-44Va05-record/install-record.txt --single-version-externally-managed --compile" 失败,错误代码 1 在 /private/tmp/pip-build-AUbwwG/psycopg2
H
Hedger

对于 MacOS,

使用以下命令安装 psycopg2,就像魅力一样!

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2

S
Sam Joseph

在 Windows XP 上,如果未安装 postgres,则会出现此错误...


你确定这是对的吗?我在我的 Windows 机器上安装了 postgres,但我仍然明白。 ?
他们为什么不在他们的网站上将其作为拥有 postgres 的先决条件?
j
joedborg

我使用 PG 下载站点 http://www.postgresql.org/download/linux/redhat/ 上的 RedHat / CentOS 存储库安装了 Postgresql92

要获得 pg_config,我必须将 /usr/pgsql-9.2/bin 添加到 PATH。


R
Rajkumar R

在 Fedora 24 上:对于 Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

激活您的虚拟环境:

pip install psycopg2

M
Manish Gupta

Psycopg2 依赖于 Postgres 库。在 Ubuntu 上,您可以使用:

apt-get install libpq-dev

然后:

pip install psycopg2

混合 pip 包和 apt-get 包不是一个好习惯。
S
Symmetric

我已经为此奋斗了好几天,终于想出了如何让“pip install psycopg2”命令在 Windows 的 virtualenv 中运行(运行 Cygwin)。

我正在点击“找不到 pg_config 可执行文件”。错误,但我已经在 Windows 中下载并安装了 postgres。它也安装在 Cygwin 中;在 Cygwin 中运行“which pg_config”给出了“/usr/bin/pg_config”,运行“pg_config”给出了合理的输出——但是使用 Cygwin 安装的版本是:

版本 = PostgreSQL 8.2.11

这不适用于当前版本的 psycopg2,它似乎至少需要 9.1。当我将“c:\Program Files\PostgreSQL\9.2\bin”添加到我的 Windows 路径时,Cygwin pip 安装程序能够找到正确版本的 PostgreSQL,并且我能够使用 pip 成功安装模块。 (无论如何,这可能比使用 PostgreSQL 的 Cygwin 版本更可取,因为本机版本会运行得更快)。


E
Elliott

在 OpenSUSE 13.2 上,这修复了它:

sudo zypper in postgresql-devel 

C
Chris Hawkes

对于低级 Windows 用户来说,不得不从下面的链接安装 psycopg2,只需将其安装到您设置的任何 Python 安装中即可。它会将名为“psycopg2”的文件夹放在 python 安装的站点包文件夹中。

之后,只需将该文件夹复制到您的 virtualenv 的 site-packages 目录,您就不会遇到任何问题。

这是您可以找到安装 psycopg2 的可执行文件的链接

http://www.lfd.uci.edu/~gohlke/pythonlibs/


我试过这个,我得到 psycopg2-2.6-cp34-none-win_amd64.whl 不是这个平台上支持的轮子。
m
marcanuy

在 Ubuntu 上,我只需要 postgres 开发包:

sudo apt-get install postgresql-server-dev-all

*在虚拟环境中测试


C
Cristian Muñoz

我可以将它安装在 Windows 机器上,并通过以下命令将 Anaconda/Spyder 与 python 2.7 一起使用:

 !pip install psycopg2

然后建立与数据库的连接:

 import psycopg2
 conn = psycopg2.connect(dbname='dbname',host='host_name',port='port_number', user='user_name', password='password')

一旦您进入 psql 并猜测密码,我就可以使用 psql -l 中列出的数据库、主机 localhost、默认数据库端口 5432、使用 \du 列出的用户。
i
iraj jelodari

在 Arch 基础发行版中:

sudo pacman -S python-psycopg2
pip2 install psycopg2  # Use pip or pip3 to python3

i
iNoob

在 OSX 10.11.6 (El Capitan) 上

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2

在 OSX 10.12.3 (Sierra) 上:brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/bin/ pip install psycopg2
在 OS X 10.14 上,这非常具有挑战性。在此处查看详细解决方案:stackoverflow.com/a/57014480/2162844
P
Palimpseste

在带有 macports 的 OSX 上:

sudo port install postgresql96
export PATH=/opt/local/lib/postgresql96/bin:$PATH

U
Umer

如果 pip 不起作用,则可以从此处下载 .whl 文件 https://pypi.python.org/pypi/psycopg2 提取它.. 比 python setup.py install


l
luisdemarchi

我遇到了这个问题,主要原因是安装了 2 个相同的版本。一份来自 postgres.app,一份来自 HomeBrew。

如果选择只保留APP:

brew unlink postgresql
pip3 install psycopg2

r
riskdoctor

在 MacOS 上安装

以下是在 Mac OS Big Sur 上安装 psycopg2 时对我和我的团队成员有用的步骤,并且我们已经针对 Big Sur 进行了广泛的测试。在开始之前,请确保您已经安装了 Xcode 命令行工具。如果没有,请从 Apple Developer 站点安装它。以下步骤假设您已安装自制软件。如果您还没有安装自制软件,请安装它。最后但并非最不重要的一点是,它还假设您已经在系统中安装了 PostgreSQL,如果没有,则安装它。不同的人有不同的偏好,但 official PostgreSQL site via Enterprise DB installer 上的默认安装方法是大多数人的最佳方法。

通过以下方式在 .zshrc 文件中建立与 pg_config 文件的链接:export PATH="$PATH:/Library/PostgreSQL/12/bin:$PATH"。这样,您就可以与 /Library/PostgreSQL/12/bin 文件夹中的 pg_config 文件建立链接。因此,如果您的 PostgreSQL 安装是通过其他方式安装的,例如 Postgres.app 或通过 Homebrew 安装的 Postgres,那么您需要在 .zshrc 文件中包含该 PostgreSQL 安装的 bin 文件夹中指向 pg_config 文件的链接,因为 psycopg2 依赖于此。

使用命令 brew install openssl 通过 Homebrew 安装 OpenSSL。原因是作为 psycopg2 基础的库 libpq 使用 openssl - psycopg2 不直接使用它。安装后将以下命令放入 .zshrc 文件中: export PATH="/usr/local/opt/openssl@1.1/bin:$PATH" export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib " export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include" 通过这样做,您将在您的目录中创建必要的链接。这些命令是在您安装 openssl 时由 brew 建议的,并且已直接从那里获取。

导出 PATH="/usr/local/opt/openssl@1.1/bin:$PATH"

导出 LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"

export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include" 通过这样做,您将在目录中创建必要的链接。这些命令是在您安装 openssl 时由 brew 建议的,并且已直接从那里获取。

现在是最重要的一步,即使用命令 brew install libpq 安装 libpq。这将安装 libpq 库。根据文档

libpq 是 C 应用程序程序员到 PostgreSQL 的接口。 libpq 是一组库函数,允许客户端程序将查询传递给 PostgreSQL 后端服务器并接收这些查询的结果。

使用 brew link libpq 链接 libpq,如果这不起作用,则使用命令:brew link libpq --force。

还将以下 export PATH="/usr/local/opt/libpq/bin:$PATH" 放入您的 .zshrc 文件中。这将为 libpq library 创建所有必要的链接。

现在重新启动终端或使用以下命令 source ~/.zshrc。即使您在 conda 环境中工作,这也有效。 NB pip install psycopg2-binary 应该避免,因为根据 psycopg2 库的开发人员

不鼓励在生产中使用 -binary 包,因为过去它们在多线程环境中被证明是不可靠的。这可能已在较新的版本中得到修复,但我从未设法重现该故障。