繁体   English   中英

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

[英]How to install psycopg2 with "pip" on Python?

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

注意:不久前,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

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

蟒蛇 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真的吗? 现在是 2021

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

sudo yum install python-devel postgresql-devel

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

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

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

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

brew install postgresql

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

祝你好运

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

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

这对我有用(在 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

如果您使用 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/按照安装过程进行操作

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

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

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

Debian/Ubuntu

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

# apt-get build-dep python-psycopg2

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

(env)$ pip install psycopg2

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

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

它不漂亮,但它有效。

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

在安装 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。

对于 MacOS,

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

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

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

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

在 Fedora 24 上:对于 Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

激活您的虚拟环境:

pip install psycopg2

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

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

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

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

我正在点击“找不到 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 版本更可取,因为本机版本会运行得更快)。

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

apt-get install libpq-dev

然后:

pip install psycopg2

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

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

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

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

在 OpenSUSE 13.2 上,这修复了它:

sudo zypper in postgresql-devel 

我可以将它安装在 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')

Arch基础发行版中:

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

如果 pip 不工作,那么您可以从这里下载 .whl 文件https://pypi.python.org/pypi/psycopg2 将其解压缩 .. 而不是python setup.py install

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

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

*在virtualenv中测试

在 OSX 10.11.6 (El Capitan) 上

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

在带有 macports 的 OSX 上:

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

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

如果您选择只保留 APP:

brew unlink postgresql
pip3 install psycopg2

在 macOS Mojave 上,确保您使用命令行工具 10.3 进行最新更新 - 对我有用 - 使用软件更新更新它,Mojave 上以前版本的命令行工具对我不起作用。

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

每次我遇到这个问题时,这似乎对我有用。

pip install psycopg2==2.7.5

在 MacOS 上安装

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

  • 竖起联动pg_config文件在您的.zshrc文件方式:
    export PATH="$PATH:/Library/PostgreSQL/12/bin:$PATH" 通过这种方式,您可以链接到/Library/PostgreSQL/12/bin文件夹中的pg_config文件。 因此,如果您的 PostgreSQL 安装是通过其他方式安装的,例如 Postgres.app 或通过自制软件安装 Postgres,那么您需要在.zshrc文件中包含该 PostgreSQL 安装的bin文件夹中pg_config文件的链接,因为psycopg2依赖psycopg2

  • 使用命令brew install openssl通过 Homebrew brew install openssl 这样做的原因是libpq (作为psycopg2基础的库)使用 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 建议的,并且是直接从那里获取的。
  • 现在到了最重要的一步,这是安装libpq使用命令brew install libpq 这将安装 libpq 库。 根据文档

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

  • 使用brew link libpq ,如果这不起作用,则使用命令: brew link libpq --force
  • .zshrc以下内容放入您的.zshrc文件中
    export PATH="/usr/local/opt/libpq/bin:$PATH" 这为libpq库创建了所有必要的链接。
  • 现在重新启动终端或使用以下命令source ~/.zshrc

    即使您在 conda 环境中工作,这也有效。

    NB pip install psycopg2-binary应该避免,因为根据 psycopg2 库的开发人员

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

我只在 Python2 上有这个错误。 我立即将我的虚拟环境升级到 Python3.8,错误不再存在。

对于 FEDORA 用户:

libpq-dev是依赖项之一,但是,package 应该在安装中命名: libpq-devel

所以这应该可以解决 Fedora 的问题:

sudo yum install libpq-devel

Gentoo尝试一下:

emerge dev-libs/libpqxx

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

>pip install psycopg2

检查一下

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM