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

And*_*dré 484 python pip psycopg2 virtualenv

我正在使用virtualenv,我需要安装"psycopg2".

我做了以下事情:

pip install http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
Run Code Online (Sandbox Code Playgroud)

我有以下消息:

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
Run Code Online (Sandbox Code Playgroud)

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

python setup.py build_ext --pg-config /path/to/pg_config build ...
Run Code Online (Sandbox Code Playgroud)

joa*_*oar 732

我发现这篇文章正在寻找解决这个问题的Linux解决方案.

"goshawk"这篇文章给了我解决方案:__CODE__如果你在Ubuntu/Debian上运行.

更新

由于越来越多的人发现这个答案很有用并且发布了他们自己的解决方案,这里有一个列表:

于Debian/Ubuntu

Python 2

sudo apt install libpq-dev python-dev
Run Code Online (Sandbox Code Playgroud)

Python 3

sudo apt install libpq-dev python3-dev
Run Code Online (Sandbox Code Playgroud)

额外

如果以上都不能解决您的问题,请尝试

sudo apt install build-essential
Run Code Online (Sandbox Code Playgroud)

要么

sudo apt install postgresql-server-dev-all
Run Code Online (Sandbox Code Playgroud)

  • 我正在使用Ubuntu 12.04 LTS,我还必须`sudo apt-get install postgresql-server-dev-all` (21认同)
  • 11.04:不同的错误,相同的解决方案.崇拜开发版! (7认同)
  • @ I159 - `*-dev`包包含从源*编译应用程序*所需的文件,它使用库提供的函数(因为`psycopg2`使用`libpq`和`python`库等). (5认同)
  • 有人可以解释为什么不只是包含pg_config的目录到PATH(或使用--pg-config)? (4认同)
  • 如果你在这里,因为你在从Dockerhub安装psycopg2到python 3 Celery容器时遇到问题,你还需要使用`sudo apt-get install -y build-essential`安装build-essential. (4认同)
  • 适用于Ubuntu 11.10.谢谢! (2认同)

Ban*_*jer 115

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

sudo yum install python-devel postgresql-devel
Run Code Online (Sandbox Code Playgroud)

这至少是CentOS 6的解决方案.

  • 我同意这解决了CentOS 6上的问题.我想补充一点,我确实必须将/usr/pgsql-9.3/bin添加到$ PATH.这是一篇文章,给出了如何做到这一点的例子.http://serverfault.com/questions/102932/adding-a-directory-to-path-in-centos (3认同)

met*_*oia 83

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

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

  • 使用最新版本:PATH = $ PATH:/Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2 (4认同)
  • 我的案例OS X Ver 10.9.4:sudo PATH = $ PATH:/Library/PostgreSQL/9.2/bin pip install psycopg2 (3认同)
  • 是的,这对我也有用.在安装PostgreSQL之后,我不得不通过`PATH = $ PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2`设置我的路径. (3认同)
  • 如果你正在使用virtualenv你不需要'sudo'这么活跃你的virtualenv并运行'PATH = $ PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2' (2认同)

nic*_*har 79

如果你在Mac上,你可以使用自制软件

brew install postgresql
Run Code Online (Sandbox Code Playgroud)

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

祝好运

  • nichochar 的回答和 attomos 的回答(安装 postgresql 并修改路径)一起为我解决了这个问题。编辑路径的最简单方法是从终端运行“sudo nano /etc/path”。 (2认同)
  • 这次真是万分感谢。我要疯了才发现这个! (2认同)

Pra*_*ota 62

我最近在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
Run Code Online (Sandbox Code Playgroud)

  • 真的没有办法让"pip install psycopg2"在Windows上运行吗?即使需要psycopg2的补丁,也是值得的. (13认同)
  • 这个[技巧](http://nedbatchelder.com/blog/201007/installing_python_packages_from_windows_installers_into.html)(礼貌,Ned Batchelder)帮我过去从二进制文件安装到virtualenv (4认同)
  • 谢谢回复.但我需要安装到虚拟环境.最良好的问候, (3认同)
  • stickpeople链接还讨论虚拟环境并指向一个pip安装版本https://github.com/nwcell/psycopg2-windows (2认同)

And*_*dré 27

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


rad*_*tek 27

这对我有用(On RHEL,CentOS:

sudo yum install postgresql postgresql-devel python-devel
Run Code Online (Sandbox Code Playgroud)

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

sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

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

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


att*_*mos 21

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

export PATH=/local/pgsql/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

或者你可以像这样追加路径:

export PATH=.../:usr/local/pgsql/bin
Run Code Online (Sandbox Code Playgroud)

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

这可能因操作系统而异.

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


Mic*_*lon 16

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

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

大多数答案还建议安装Python开发库.小心.如果您只使用发行版安装的默认Python,那将会有效,但如果您有更新的版本,则可能会导致问题.如果你已经在这台机器上构建了Python,那么你已经拥有了编译C/C++库以与Python接口所需的开发库.只要你使用正确的pip版本,安装在与python二进制文件相同的bin文件夹中的那个版本,那么你就完全了.无需安装旧版本.


小智 16

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

$ apt-get update
$ apt install python3-dev libpq-dev
$ pip3 install psycopg2
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是 Ubuntu 20.04 或更高版本,请安装 `sudo apt-get install build-essential` (2认同)

Omi*_*aha 13

Debian/Ubuntu:

首先安装并构建psycopg2包的依赖关系:

# apt-get build-dep python-psycopg2
Run Code Online (Sandbox Code Playgroud)

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

(env)$ pip install psycopg2
Run Code Online (Sandbox Code Playgroud)


mon*_*kut 6

我之前已经在你安装的基础python安装中首先安装了Windows.

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

它不漂亮,但它的工作原理.

  • 你能详细说明吗?你在哪里获得psycopg2的第一名? (2认同)
  • windows二进制文件可在http://stickpeople.com/projects/python/win-psycopg/上找到 (2认同)

xtr*_*ist 5

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


Gin*_*ino 5

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

如果您使用 Linux(可能还有其他系统,但我无法从经验中得出结论),您需要确保在安装开发包时非常准确地了解您正在运行的 Python 版本。

例如,当我使用命令时:

sudo apt-get install python3-dev
Run Code Online (Sandbox Code Playgroud)

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

pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install python3.7-dev
Run Code Online (Sandbox Code Playgroud)

一旦我这样做了,我就不再遇到问题了。显然,如果您使用的是 Python 3.5 版,您会将 7 更改为 5。

  • 这应该是答案,`sudo apt-get install python-xx-dev`解决了这个问题。 (3认同)

Nit*_*hin 5

对于 MacOS,

使用下面的命令安装psycopg2,效果很好!!!

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2
Run Code Online (Sandbox Code Playgroud)