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

709

我正在使用 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 ...

3
当您尝试运行 python setup.py build_ext --pg-config /path/to/pg_config build ... 命令时,是否成功? - lajarre
2
对于 Python 3.4 或 Python 3.5,您需要安装相应版本的 dev 包,例如 sudo apt install libpq-dev python3.4-devsudo apt install libpq-dev python3.5-dev - Avinash Raj
1
请将 psycopg2 从依赖文件中移除,并添加 psycopg2-binary,然后重试。 - Muzaffer
37个回答

1225

注意: 自从一段时间以来,PyPI上已经有了Windows的二进制轮,所以这对于Windows用户不再是一个问题。以下是Linux、Mac用户的解决方案,因为许多用户通过网络搜索找到了这篇文章。


选项一

相反地,安装psycopg2-binary PyPI软件包,它为Linux和Mac OS提供了Python安装程序。

pip install psycopg2-binary

选项2

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

Debian/Ubuntu

Python版本 命令 备注
默认Python 3 sudo apt install libpq-dev python3-dev
Python 3.x sudo apt install libpq-dev python3.x-dev 在命令中替换x
Python 2 sudo apt install libpq-dev python-dev

如果这还不够,您可能还需要安装其他软件包。

sudo apt install build-essential

或者

sudo apt install postgresql-server-dev-all

在重新安装psycopg2之前,也要确保卸载干净。

CentOS 6

请参考Banjer的回答

macOS

请参考nichochar的回答


7
11.04: 不同的错误,相同的解决方案。崇拜开发版! - I159
5
*-dev 软件包包含编译源代码所需的文件,这些源代码需要使用库提供的函数(例如 psycopg2 使用 libpqpython 库等)。 - joar
22
我正在使用Ubuntu 12.04 LTS,我还需要运行sudo apt-get install postgresql-server-dev-all - caleb
5
请问可以解释一下为什么不把包含pg_config的目录添加到PATH中(或者使用--pg-config)吗? - lajarre
6
如果您在这里是因为在将psycopg2安装到来自Dockerhub的Python 3 Celery容器中遇到了问题,那么您还需要使用“sudo apt-get install -y build-essential”安装build-essential。 - derrend
显示剩余20条评论

127

在CentOS上,您需要安装PostgreSQL的开发包:

sudo yum install python-devel postgresql-devel

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


1
这不仅仅是CentOS,我认为。psycopg有本地依赖项,因此要从源代码构建(这是pip所做的),需要安装PostgreSQL开发库。(C头文件,也许?我对编译本地代码不太了解。) - jpmc26
4
我同意这个解决方案适用于CentOS 6。我想补充一点,我确实需要将/usr/pgsql-9.3/bin添加到$PATH中。这里有一篇帖子提供了如何操作的示例:http://serverfault.com/questions/102932/adding-a-directory-to-path-in-centos - Ryder Brooks
对于CentOS 7和Python 3.4,我必须安装“python34-devel”。我的相关问题的答案:https://dev59.com/kHzaa4cB1Zd3GeqPN0VT#42370489 - Mark Edington
在AWS EC2上工作,使用基于RHEL的64位Amazon Linux/2.5.1。 - Ben Wheeler
也许值得一提的是,这将安装 psycopg2 的依赖项而不是 pip 安装它,因此您实际上必须在安装依赖项后再 pip 安装它。 - Shmack
显示剩余2条评论

107

3
nichochar和attomos的回答(安装postgresql并修改路径)共同解决了我的问题。编辑路径最简单的方法是从终端运行“sudo nano /etc/path”。 - tbradley22
这并不像 OP 所要求的在虚拟环境中安装 postgresql。 - Jorge Leitao
我认为OP并不一定想在virtualenv中使用postgres。他说他正在使用virtualenv。我认为他误解了postgresql是一个比仅仅是Python库更大的服务。 - nichochar

90
在安装 Postgres 后,我需要在 Mac Mavericks 上使用以下代码来安装 psycopg2 9.3.2.0 RC2 版本:sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2。请注意,此命令中的 html 标记已被保留。

sudo PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin pip install psycopg2 [截至2014年4月5日] - user798719
2
如果您正在使用virtualenv,则不需要使用'sudo',因此请激活您的virtualenv并运行'PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2'。 - elin3t
3
我的情况是OS X Ver 10.9.4:在使用sudo PATH=$PATH:/Library/PostgreSQL/9.2/bin pip install psycopg2命令安装psycopg2。 - emecas
3
是的,这对我也起作用了。在安装完PostgreSQL之后,我必须通过执行PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2来设置我的路径。 - iamfrancisyo
6
请使用最新版本: PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2。将此命令添加到终端中,即可安装psycopg2库并将其添加到您的Python环境中,以便在代码中使用它来连接和操作PostgreSQL数据库。 - Diego Sarmiento
显示剩余4条评论

64

我最近在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

3
感谢您的回复。但是我需要安装到虚拟环境中。最好的问候。 - André
4
这个 技巧(由 Ned Batchelder 提供)曾经帮助我在虚拟环境中从二进制文件中安装软件包。 - Praveen Gollakota
14
在Windows上真的没有办法让"pip install psycopg2"正常工作吗?即使需要对psycopg2进行修补,这也是值得的。 - slacy
1
当我在我的机器上没有安装Postgres时,出现了这个错误 - 我安装了Postgres,错误消失了... - Sam Joseph
2
这个链接还讨论了虚拟环境,并且指向了一个pip安装版本的https://github.com/nwcell/psycopg2-windows。 - seanv507
显示剩余3条评论

34

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


如果您使用的是Ubuntu 20.04或更高版本,请安装sudo apt-get install build-essential - Muhammad Zubair
对我来说,python3 指的是 3.10 版本,但我使用的是 3.9 版本,所以我从 python3-dev 改为 python3.9-dev,然后它就可以工作了。 - Nikhil Bhardwaj

28

这是对我有用的方法(在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环境变量。 - grim
1
如果重新加载您的终端会话,则不必这样做。 - radtek
太好了,非常感谢。 - Jorge Vidinha
如果您正在使用Python 3,则需要安装带有编号的Python开发包。请参见:https://dev59.com/kHzaa4cB1Zd3GeqPN0VT#42370489 - Mark Edington

23
到目前为止,回答都太像神奇配方了。您收到的错误告诉您pip无法找到需要的PostgreSQL查询库的一部分。可能是因为您在OS的非标准位置上安装了它,这就是为什么消息建议使用--pg-config选项的原因。
但更常见的原因是您根本没有安装libpq。这通常发生在您没有安装PostgreSQL服务器,因为您只想运行客户端应用程序的计算机上。每个操作系统/发行版都不同,例如在Debian/Ubuntu上,您需要安装libpq-dev。这使您可以编译和链接代码以针对PostgreSQL查询库。
大多数回答还建议安装Python dev库。要小心。如果你只使用你的发行版默认安装的Python,那将起作用,但如果你有一个更新版本,它可能会引起问题。如果您在此计算机上构建了Python,则已经拥有了编译C/C++库与Python接口所需的dev库。只要使用正确的pip版本(与python二进制文件在同一个bin文件夹中安装),您就已经准备好了。不需要安装旧版本。

1
关于OS X呢?我的意思是,它基于Unix,但我认为可能会有所不同。 - Lara

21
如果您使用的是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/中的安装过程进行安装。


1
为什么要从源代码安装而不是使用Homebrew? - duozmo
@duozmo,这个问题在2012年就被回答了,我相信当时我尝试使用Homebrew安装它,但失败了。现在,我已经使用Homebrew成功地安装了PostgreSQL。 - attomos

16

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

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

2
如果您使用的是Ubuntu 20.04或更高版本,请安装sudo apt-get install build-essential - Muhammad Zubair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接