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

Posted

技术标签:

【中文标题】如何在 Python 上使用“pip”安装 psycopg2?【英文标题】:How to install psycopg2 with "pip" on Python? 【发布时间】:2011-07-22 04:53:52 【问题描述】:

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

【问题讨论】:

您尝试 python setup.py build_ext --pg-config /path/to/pg_config build ... 时是否有效?? 对于python 3.4或python 3.5,您必须安装相应版本的开发包,如sudo apt install libpq-dev python3.4-devsudo apt install libpq-dev python3.5-dev 【参考方案1】:

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

sudo apt install libpq-dev python-dev

如果这还不够,请尝试

sudo apt install build-essential

sudo apt install postgresql-server-dev-all

在再次安装 psycopg2 之前也是如此。

CentOS 6

见Banjer's answer

【讨论】:

11.04:不同的错误,相同的解决方案。崇拜开发版本! @I159 - *-dev 包包含编译使用库提供的函数的应用程序从源代码 所需的文件(因为psycopg2 使用@987654332 @ 和 python 库等)。 我使用的是 Ubuntu 12.04 LTS,我也不得不sudo apt-get install postgresql-server-dev-all 有人能解释一下为什么不只是将包含 pg_config 的目录放到 PATH 中(或使用 --pg-config)吗? 如果您在这里是因为您无法从 Dockerhub 将 psycopg2 安装到 python 3 Celery 容器中,您还需要使用 sudo apt-get install -y build-essential 安装 build-essential 【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

在 MacOS 上安装

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

通过:export PATH="$PATH:/Library/PostgreSQL/12/bin:$PATH" 在您的 .zshrc 文件中提供与 pg_config 文件的链接。这样,您就可以与 /Library/PostgreSQL/12/bin 文件夹中的 pg_config 文件建立链接。因此,如果您的 PostgreSQL 安装是通过其他方式安装的,例如 Postgres.app 或通过 Homebrew 安装的 Postgres,那么您需要在您的 .zshrc 文件中包含该 PostgreSQL 安装的 bin 文件夹中指向 pg_config 文件的链接为 @ 987654332@ 依赖于此。

使用命令brew install openssl 通过 Homebrew 安装 OpenSSL。原因是 libpqpsycopg2 的基础库,使用 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 建议的,并且已直接从那里获取。

现在是最重要的一步,使用命令brew install libpq 安装libpq。这会安装 libpq 库。 As per the documentation

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

使用 brew link libpq 链接 libpq,如果这不起作用,请使用命令:brew link libpq --force。 还将以下 export PATH="/usr/local/opt/libpq/bin:$PATH" 放入您的 .zshrc 文件中。这将为libpq library 创建所有必要的链接。 现在重新启动终端或使用以下命令source ~/.zshrc。 即使您在 conda 环境中工作,这也有效。 注意pip install psycopg2-binary应该避免,因为as per the developers of the psycopg2 library

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

【讨论】:

【参考方案5】:

对于 MacOS,

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

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

【讨论】:

【参考方案6】:

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

pip install psycopg2==2.7.5

【讨论】:

【参考方案7】:

确保在运行 pip install psycopg2

之前已安装 Postgres 并更新 PATH
export PATH="$PATH:/Applications/Postgres.app/Contents/Versions/12/bin"

【讨论】:

【参考方案8】:

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

>pip install psycopg2

查看this

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

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

如果选择只保留APP:

brew unlink postgresql
pip3 install psycopg2

【讨论】:

【参考方案11】:

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

【讨论】:

这应该是答案,sudo apt-get install python-x.x-dev 解决了这个问题。【参考方案12】:

如果 pip 不起作用,则可以从此处下载 .whl 文件 https://pypi.python.org/pypi/psycopg2 提取出来。。 比python setup.py install

【讨论】:

【参考方案13】:

在带有 macports 的 OSX 上:

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

【讨论】:

【参考方案14】:

在 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 在 OS X 10.14 上,这非常具有挑战性。在此处查看详细解决方案:***.com/a/57014480/2162844【参考方案15】:

这对我有用(在 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 环境变量。 如果您重新加载终端会话,则不必这样做。 非常感谢。 如果您使用的是 Python 3,则需要安装编号的 Python 开发包。见:***.com/a/42370489/26219【参考方案16】:

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

apt-get install libpq-dev

然后:

pip install psycopg2

【讨论】:

混合使用 pip 包和 apt-get 包不是一个好习惯。【参考方案17】:

在 Fedora 24 上:对于 Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

激活您的虚拟环境:

pip install psycopg2

【讨论】:

【参考方案18】:

Arch 基础分布中:

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

【讨论】:

【参考方案19】:

我可以将它安装在 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 并猜测密码,我就可以使用 psql -l 中列出的数据库、主机 localhost、默认数据库端口 5432、\du 列出的用户。【参考方案20】:

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

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

*在虚拟环境中测试

【讨论】:

【参考方案21】:

Debian/Ubuntu:

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

# apt-get build-dep python-psycopg2

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

(env)$ pip install psycopg2

【讨论】:

【参考方案22】:

在 OpenSUSE 13.2 上,这修复了它:

sudo zypper in postgresql-devel 

【讨论】:

【参考方案23】:

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

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

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

【讨论】:

关于 Os x?我的意思是,基于 Unix,但我认为可以不同。【参考方案24】:

对于那些不得不从下面的链接安装 psycopg2 的低级 Windows 用户,只需将其安装到您设置的任何 Python 安装中即可。它会将名为“psycopg2”的文件夹放在 python 安装的站点包文件夹中。

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

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

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

【讨论】:

我试过这个,我得到 psycopg2-2.6-cp34-none-win_amd64.whl is not a supported wheel on this platform.【参考方案25】:

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

sudo yum install python-devel postgresql-devel

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

【讨论】:

我认为这不仅仅是 CentOS。 psycopg 具有本地依赖项,因此要从源代码构建(这就是 pip 所做的),PostgreSQL 开发库需要在那里。 (可能是 C 头文件?我对编译本机代码知之甚少。) 我同意这解决了 CentOS 6 上的问题。我想补充一点,我确实必须将 /usr/pgsql-9.3/bin 添加到 $PATH。这是一篇文章,给出了如何做到这一点的示例。 serverfault.com/questions/102932/… 对于 CentOS 7 和 Python 3.4,我必须安装“python34-devel”。我对相关问题的回答:***.com/a/42370489/26219 在 AWS EC2 上工作,使用基于 RHEL 的 64 位 Amazon Linux/2.5.1 对于 Fedora 中的 Python3,请使用 sudo yum install python36-devel(将 36 替换为您的 Python 3 版本)。【参考方案26】:

在带有 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 日] 如果您使用的是 virtualenv,则不需要 'sudo',因此请激活您的 virtualenv 并运行 'PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2' 我的案例 OS X Ver 10.9.4: sudo PATH=$PATH:/Library/PostgreSQL/9.2/bin pip install psycopg2 是的,这对我也有用。安装 PostgreSQL 后,我必须通过 PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2 设置路径。 使用最新版本:PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2【参考方案27】:

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

brew install postgresql

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

祝你好运

【讨论】:

nichochar 的回答和 attomos 的回答(安装 postgresql 并修改路径)一起为我解决了这个问题。编辑路径的最简单方法是从终端运行“sudo nano /etc/path”。 谢谢你。在我发现这个之前我快要发疯了! 也为我工作,无需胡思乱想(通常,我不建议在这里使用 sudo - 您应该可以在用户空间中执行此操作)。 这不会像 OP 要求的那样在 virtualenv 中安装 postgresql。 我认为 OP 不一定需要 virtualenv 中的 postgres。他说他正在使用virtualenv。我认为他误解了 postgresql 是一个比简单的 python 库更大的服务。【参考方案28】:

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

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

【讨论】:

【参考方案29】:

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

【讨论】:

感谢您的回复。但我需要安装到虚拟环境。最好的问候, 这个trick(由 Ned Batchelder 提供)过去曾帮助我从二进制文件安装到虚拟环境 真的没有办法让“pip install psycopg2”在 Windows 上运行吗?即使 psycopg2 的补丁是必要的,它也是值得的。 当我的机器上没有安装 postgres 时出现此错误 - 我安装了 postgres 并且错误消失了... stickpeople 链接还讨论了虚拟环境并指向 pip 安装版本github.com/nwcell/psycopg2-windows【参考方案30】:

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

【讨论】:

知道为什么这不会出现在默认路径中吗? 我遇到这样的错误如何纠正这个问题请帮帮我!!!命令 "/usr/bin/python -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-AUbwwG/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open )(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-44Va05-record/install-record.txt --single-version-externally-managed --compile" 失败,错误代码 1 在 /private/tmp/pip-build-AUbwwG/psycopg2

以上是关于如何在 Python 上使用“pip”安装 psycopg2?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何在 python 2.7 上安装 python pip

pip如何安装

如何使用 Python 2.7 在 Windows 上修复 pip 安装证书问题? [复制]

如何在 AWS Elastic Beanstalk 或 Google App Engine 上使用没有 pip 安装的 Python 库?

如何在 Windows XP 上使用 pip 安装 selenium 包?