如何在 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-dev
或sudo 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。原因是 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 建议的,并且已直接从那里获取。
现在是最重要的一步,使用命令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 并更新 PATHexport 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_profile
在export 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 在 Windows 上修复 pip 安装证书问题? [复制]
如何在 AWS Elastic Beanstalk 或 Google App Engine 上使用没有 pip 安装的 Python 库?