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


506

我在用着 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 2012年

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

Answers:


808

注意:早在不久之前,PyPI中就存在Windows的二进制轮子,因此Windows用户不再是问题。以下是适用于Linux和Mac用户的解决方案,因为他们中的很多人都是通过网络搜索找到这篇文章的。


选项1

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

pip install psycopg2-binary

选项2

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

Debian / Ubuntu

Python 3

sudo apt install libpq-dev python3-dev

您可能需要安装 python3.8-dev或类似的工具,例如Python 3.8。

Python 2 1

sudo apt install libpq-dev python-dev

如果还不够,请尝试

sudo apt install build-essential

要么

sudo apt install postgresql-server-dev-all

在再次安装psycopg2之前。

CentOS的6

参见班杰的答案


1真的吗?2020年


7
11.04:不同的错误,相同的解决方案。崇拜开发版本!
I159 2011年

5
@ I159- *-dev程序包包含使用提供的功能编译应用程序所需的文件,该使用库提供的功能(如和和库一样psycopg2使用)。libpqpython
2011年

21
我正在使用Ubuntu 12.04 LTS,而且我也不得不sudo apt-get install postgresql-server-dev-all
caleb 2012年

4
有人可以解释为什么不只是将包含pg_config的目录包含在PATH中(或使用--pg-config)吗?
lajarre 2012年

5
如果您在这里是因为无法从Dockerhub将psycopg2安装到python 3 Celery容器中,则还需要使用sudo apt-get install -y build-essential
derrend

118

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

sudo yum install python-devel postgresql-devel

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


1
我认为这不只是CentOS。psycopg具有本机依赖性,因此要从源代码进行构建(这是pip所做的),PostgreSQL开发库必须存在。(可能是C标头?我对编译本机代码了解不多。)
jpmc26 2013年

3
我同意这可以解决CentOS 6上的问题。我想补充一点,我确实必须将/usr/pgsql-9.3/bin添加到$ PATH中。这是一篇文章,提供了如何执行此操作的示例。serverfault.com/questions/102932/…–
莱德·布鲁克斯

对于CentOS 7和Python 3.4,我必须安装“ python34-devel”。我对一个相关问题的回答:stackoverflow.com/a/42370489/26219
Mark Edington

使用基于RHEL的64位Amazon Linux / 2.5.1在AWS EC2上工作
Ben Wheeler

对于Fedora中的Python3,请使用sudo yum install python36-devel(用您的Python 3版本替换36)。
LoMaPh

85

在安装了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日]
user798719

2
如果你正在使用的virtualenv你不需要“须藤”如此活跃你的virtualenv并运行“PATH = $ PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin PIP安装psycopg2”
elin3t

3
我的案例OS X版本10.9.4:sudo PATH = $ PATH:/Library/PostgreSQL/9.2/bin pip install psycopg2
emecas 2014年

3
是的,这也对我有用。安装PostgreSQL之后,我必须通过做设置路径PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2
iamfrancisyo

4
使用最新版本:PATH = $ PATH:/Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2
Diego Sarmiento

80

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

brew install postgresql

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

祝好运


2
nichochar的答案和attomos的答案(安装postgresql并修改路径)共同为我解决了这个问题。编辑路径的最简单方法是从终端运行“ sudo nano / etc / path”。
tbradley22

2
这次真是万分感谢。我要疯了才发现这个!
Leo C Han

1
也为我工作,不需要摸索我的路径(通常,我在这里不建议使用sudo-您应该可以在用户空间中执行此操作)。
duozmo

这不会virtualenv像要求的OP 中那样安装postgresql 。
豪尔赫·雷涛

我认为OP不一定要在virtualenv中使用postgres。他说他正在使用virtualenv。我认为他误解了postgresql是比简单的python库更大的服务。
nichochar

61

我最近在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
谢谢回复。但是我需要安装到虚拟环境。最好的方面,
安德烈·

4
这个技巧(由Ned Batchelder提供)过去曾帮助我从二进制文件安装到virtualenv
Praveen Gollakota 2011年

13
真的没有办法在Windows上运行“ pip install psycopg2”吗?即使需要对psycopg2进行修补,还是值得的。
slacy 2011年

1
我的计算机上未安装postgres时收到此错误-我安装了postgres且错误消失了
Sam Joseph

2
stickpeople链接还讨论了虚拟环境,并指向一个pip安装版本github.com/nwcell/psycopg2-windows
seanv507 2015年

27

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


27

这对我有用(在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环境变量。
2015年

如果您重新加载终端会话,则不必这样做。
radtek

优秀非常感谢。
豪尔赫·维迪尼亚

如果您使用的是Python 3,则需要安装编号的Python开发包。请参阅:stackoverflow.com/a/42370489/26219
马克·爱丁顿

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
为什么从源头而不是从家酿?
duozmo

@duozmo在2012年得到了答复,我相信当时我确实尝试过用Homebrew安装它,但失败了。现在,我已经使用Homebrew安装了PostgreSQL,没有任何问题。
attomos

17

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

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

大多数答案还建议安装Python开发库。小心。如果仅使用发行版中安装的默认Python,则可以使用,但是如果您使用的是较新版本,则可能会引起问题。如果您在此计算机上构建了Python,那么您已经具有编译C / C ++库与Python交互所需的dev库。只要您使用的是正确的pip版本,即与python二进制文件安装在同一bin文件夹中的版本,您便都已准备就绪。无需安装旧版本。


1
关于OS X?我的意思是,它基于Unix,但我认为可以有所不同。
拉拉2015年

13

Debian/Ubuntu

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

# apt-get build-dep python-psycopg2

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

(env)$ pip install psycopg2

6

我已经在Windows中首先安装到基本python安装中的位置之前完成了此操作。

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

它不漂亮,但是可以用。


2
请您详细说明。首先从哪里获得psycopg2?
Saher Ahwal


在花了几天时间和网上描述的所有其他选项之后,我也这样做了。对于阻止使用pip安装它的原因,我还是很傻venv。我能够在虚拟环境之外安装,没问题。然后,我从Python包库目录中按原样复制了该文件,并粘贴到的同一目录中venv。我的直觉是,因为我的Python版本是Anaconda发行版,所以假定/使用的路径有些不对劲。
kuanb

5

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


知道为什么它不以默认路径结尾吗?
Bret 2015年

1
我有一个错误,该如何纠正此错误,请帮助我!!!命令“ / usr / bin / python -c”导入设置工具,标记化; __ file __ ='/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec(compile(getattr(tokenize,'open',open )(file).read()。replace('\ r \ n','\ n'),file,'exec'))“安装--record /tmp/pip-44Va05-record/install-record.txt --single-version-externally-managed --compile“在/ private / tmp / pip-build-AUbwwG / psycopg2中失败,错误代码为1
vijay

3

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


你确定对吗?我在Windows机器上安装了postgres,但仍然可以。?
Saher Ahwal

2
他们为什么不将其作为需要postgres的前提条件放在网站上?
2012年


3

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

如果您使用的是Linux(可能还有其他系统,但我不能从经验上讲),则在安装dev软件包时,需要确保准确地了解运行的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。


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

2

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

我碰到了“找不到pg_config可执行文件”。错误,但我已经在Windows中下载并安装了postgres。它也安装在Cygwin中。在Cygwin中运行“哪个pg_config”给出了“ / usr / bin / pg_config”,而运行“ pg_config”给出了合理的输出-但是,与Cygwin一起安装的版本是:

版本= PostgreSQL 8.2.11

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


2

在Fedora 24上:对于Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

激活您的虚拟环境:

pip install psycopg2


1

对于Windows较低的用户,他们不得不从下面的链接安装psycopg2,只需将其安装到您设置的任何Python安装中即可。它将名为“ psycopg2”的文件夹放置在python安装的site-packages文件夹中。

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

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

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


我尝试了这个,但得到了psycopg2-2.6-cp34-none-win_amd64.whl在此平台上不受支持。
jayeshkv 2015年

1

在OpenSUSE 13.2上,此操作已修复:

sudo zypper in postgresql-devel 

1

我可以将其安装在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 -l,主机localhost,默认数据库端口5432中的数据库,\du在进入psql并猜测密码后列出的用户使用此功能。
哈里·莫雷诺

1

Arch基本发行版中:

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


0

在Ubuntu上,我只需要postgres dev软件包:

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

*在virtualenv中测试


0

在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
ishandutta2007

在OS X 10.14上,这非常困难。在此处查看详细的解决方案:stackoverflow.com/a/57014480/2162844
Bisonbleu

0

在具有Macports的OSX上:

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

0

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

如果您选择仅保留APP:

brew unlink postgresql
pip3 install psycopg2

0

在macOS Mojave上,请确保您使用适用于我的Command Line Tools 10.3进行了最新更新-通过Software Update对其进行了更新,Mojave上的Command Line Tools的先前版本对我不起作用。



-2

在Windows上是这样工作
的在虚拟环境中通过pip安装flask之后,在命令提示符下运行此命令

>pip install psycopg2

检查一下

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.