未在开发系统上安装PostgreSQL时将psycopg2安装到virtualenv中


74

当我的开发系统上未安装PostgreSQL时,是否可以安装psycopg2virtualenvOS X 10.6的MacBook Pro上?

当我pip install psycopg2从内部运行时virtualenv,收到以下错误。

我正在尝试使用Django连接到服务器上的旧数据库,如果可能的话,我不希望在我的开发系统上安装PostgreSQL。

为什么不安装PostgreSQL?

使用自制软件安装PostgreSQL时收到错误消息。我在MacBook Pro上安装了Xcode4,并且只有Xcode4,并认为这与缺少gcc 4.0有关。但是,这是另一个StackOverflow问题的问题。

2011年4月12日上午8:37更新:我仍然想知道如果不在MacBook Pro上安装PostgreSQL,是否有可能。但是,我运行brew update并强制使用ossp-uuid重新安装ossp-uuid,brew install --force ossp-uuid现在brew install postgresql可以使用了。成功安装PostgreSQL后,我就可以pip install psycopg2从virtualenv中进行安装了。

错误来自 pip install psycopg2

$ pip install psycopg2
Downloading/unpacking psycopg2
  Running setup.py egg_info for package 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'.
    Complete output from command python setup.py egg_info:
    running 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
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 /Users/matthew/.pip/pip.log

初步研究

以下是我作为初步研究阅读的文章:


1
看到正确的答案在这里: stackoverflow.com/questions/5420789/...
反渗透

该问题的答案是针对debian / ubuntu的,因此如果您使用的是osx,则无济于事。
蒂姆(Tim)

在Centos 6和Postgres 9.1上,在virtualenv中为pg_config设置正确的路径:export PATH=/usr/pgsql-9.1/bin:"$PATH"
elim

2
开发django不需要安装PostgreSQL。我们需要执行此操作,因为服务器的requirements.txt列出了psycopg,而我们从未在本地使用过。这些都太紧密地耦合在一起,并导致很多配置问题。
Alper 2014年

哇,对于有关Mac设置上的virtualenv的细节的帖子,没有一个答案。如我错了请纠正我。
约翰·高特

Answers:


50

psycopg取决于pg_config命令,如果没有该命令,则无法安装psycopg。

如果系统安装对您有问题,为什么不尝试编译PostgreSQL并在$ PATH中包括生成的bin文件?喜欢:

export PATH=/path/to/compiled/postgresql/bin:"$PATH"
pip install psycopg2

4
“ pip install psycopg”不再起作用(错误404),请改用“ pip install psycopg2”
Juande Carrion,2012年

4
如果您使用的是Mac。然后,使用命令“ locate pg_config”找到路径。在由Port安装Postgresql的OSX Mavericks中,路径为/ opt / local / lib / postgresql92 / bin
Fernando Silva

也可以在Windows上使用!+1
爱德华·卢卡

locate postgres可以帮助您找到已编译的postgreSQL bin的路径
user2761030

我没有pg_config,并且一直与psycopg2一起运行。这个已经过期了。
std''OrgnlDave


23
brew install postgresql

export LDFLAGS="-L/usr/local/opt/openssl/lib"

export CPPFLAGS="-I/usr/local/opt/openssl/include"

pip3 install psycopg2

5
由于某些原因,这在Mac OS X上对我有用,而其他几种解决方案则不行。我已经在PATH上安装了postgresql和pg_config,但是在安装psycopg2时仍然遇到相同的错误。这两export行为我解决了。
乔治·贝塞拉

2
经过数小时的努力,这个解决方案解决了我的问题。谢谢。
BobyCloud

有人可以解释为什么这样做吗?openssl在这里做什么?
Ananta K Roy

1
psycopg需要@AnantaKRoy openssl才能将SSL安全连接到postgres。标志是这里的关键。苹果已经在openssl周围移动了,这些设置正在其他地方寻找它们。
Snap E Tom

11
apt-get install libpq-dev

也帮助我解决了debian的问题。之后,请pip安装psycopg2。我在heroku上设置环境时遇到了pg_config找不到问题的问题,现在它可以正常工作了。


5

您需要安装python-dev软件包才能使用python扩展名,例如psycopg2。我不知道如何在Mac中安装软件包,但是我运行以下命令在Ubuntu计算机上安装python软件包。

sudo apt-get install python-dev 

要么

sudo apt-get install python3-dev

如果您使用的是Python3.x。

安装完成后,在虚拟环境中运行以下命令。

pip install psycopg2

4

您不需要安装完整的PostgreSQL:仅需要客户端库。


1
您是否建议在OS X上安装PostgreSQL客户端库?
马修·兰金,

我没有建议,我不是OS X用户。Fink版本使用postgresql90-dev来构建(可能是.h)和postgresql90-shlibs(可能是libpq),但是我不知道如何在其他软件包中排名该选项(我不知道)或从源代码构建libpq。参考 fink.cvs.sourceforge.net/fink/dists/10.4/unstable/main/finkinfo/…– 2011
皮罗

3

我在MAC OSX中使用以下命令解决了该问题:

$ wget https://ftp.postgresql.org/pub/source/v9.5.3/postgresql-9.5.3.tar.bz2
$ tar xfv postgresql-9.5.3.tar.bz2
$ cd postgresql-9.5.3
$ ./configure
$ make
$ cd src/bin/pg_config
$ export PATH=`pwd`:"$PATH"
$ pip install psycopg2

这似乎可以正确回答最初的问题。
rwenz3l

pip是否可以将libpq静态编译为psycopg2,换句话说,是否可以在以后删除postgresql安装?
raart's

作为替代方案,只是做pip install psycopg2-binary
弗拉基米尔·S

1

使用您在4月12日更新中描述的方法,我能够安装PostgreSQL(+1)。请注意,我最初运行的是Python 2.7.1(32位),并且自制软件引发了一些有关使用32位版本的Python的错误和警告。从那以后,我切换了2.7.1的64/32位版本,它的工作原理就像冠军。

关于pyscopg2,我可以通过编辑setup.cfg将其从源代码安装到我的虚拟环境中。我将pg_config设置为改正自制酒窖内的路径(pg_config = / usr / local / Cellar / postgresql / 9.0.4 / bin / pg_config)。保存更改后,我以零个问题运行python setup.py install。值得一提的,我并没有Mac的默认设置蟒设置为32位。我从头到尾使用了新的64位。

看了一些文档之后,我想如果我将homebrew的postgresql路径添加到系统路径中,我本可以使用pip来安装它。

参考:http :
//favosdream.blogspot.com/2009/09/make-psycopg2-and-readline-work-in-snow.html

更新6-8-2011:
将OS X上编写的项目移植到Windows 7时,我发现我也必须在Windows上安装PostgreSQL。最终在我的启动屏幕上创建了另一个用户,以及其他我不喜欢的东西。在进行一些挖掘时,我在这里找到了PostgreSQL的Windows驱动程序。从那以后,我已经卸载了完整的PostgreSQL并安装了ODBC驱动程序,到目前为止,该驱动程序运行良好。

为了解决原始问题,在进行了更多挖掘之后,我认为我在这里找到了与OS X等效的ODBC 。我没有机会尝试使用它们,但是该概念在Windows 7上效果很好。当我有机会尝试使用它们时,我将对其进行更新。在此之前,我希望这会有所帮助。


在Windows上,您不需要安装Postgresql,而只需在路径中包含二进制文件即可。这可以通过下载二进制文件enterprisedb.com/products-services-training/pgbindownload的zip文件并将该目录添加到您的路径中(即更改PATH环境变量)来实现。将它们复制到安全/已知的地方,然后再添加路径以使生活更轻松!
科里·海豚

@wcdolphin感谢您的输入。这样肯定会使生活更轻松。
亚当·刘易斯

1

以上所有内容均不适用于我(OS Catalina 10.15.1)

与古典postgreshomebrew版本存在冲突。请通过命令删除自制版本

$ brew uninstall postgresql

然后从官方网站安装:

$ sudo mkdir -p /etc/paths.d && echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

这是简单psycopg2安装或django-heroku打包的实际情况。


1

如果您最近更新了python或更改了默认python(例如,从3.6更改为3.8)。以下代码

sudo apt-get install python-dev   OR    sudo apt-get install python3-dev

将为先前的python版本安装/工作。

因此,如果您希望此命令适用于最近更新/更改的python版本,请在命令中提及该特定版本,例如python3.8

sudo apt-get install python3.8-dev  

尝试以下

pip install wheel
export PATH=/path/to/compiled/postgresql/bin:"$PATH"
sudo apt-get install libpq-dev
sudo apt-get install python3.x-dev    **Change x with your version, eg python3.8**
pip install psycopg2-binary
pip install psycopg2

0

由于我不需要在此服务器上安装postgresql数据库,因此我在Ubuntu 14_04版本上安装了以下库,然后在同一服务器上运行pip install psycopg2

apt-get install libpq-dev python-dev,然后在虚拟环境中执行pip install psycopg2。

输出使用缓存的psycopg2-2.6.1.tar.gz收集psycopg2。为收集的软件包构建轮子:psycopg2运行psycopg2的setup.py bdist_wheel存储在以下目录中:/root/.cache/pip/wheels/e2/9a/5e/7b620848bbc7cfb9084aafea077be11618c2b5067bd532内置的psycopg2安装收集的软件包:psycopg2成功安装了psycopg2-2.6.1



0

我知道您在要求开发环境,但是如果您要在服务器上进行部署,请说Heroku。只需在您的项目的requirements.txt中添加以下行。

django-heroku == 0.3.1

由于此软件包本身将在服务器部署上安装所需的软件包,例如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.