我正在使用 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 ...
sudo apt install libpq-dev python3.4-dev
或 sudo apt install libpq-dev python3.5-dev
psycopg2
删除它并将 psycopg2-binary
添加到依赖项文件并重试。
注意:由于不久前,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
对于 Python 3.8,您可能需要安装 python3.8-dev
或类似软件。
蟒蛇2
sudo apt install libpq-dev python-dev
如果这还不够,请尝试
sudo apt install build-essential
或者
sudo apt install postgresql-server-dev-all
以及再次安装 psycopg2 之前。
中央操作系统 6
苹果系统
在 CentOS 上,您需要 postgres 开发包:
sudo yum install python-devel postgresql-devel
这至少是 CentOS 6 上的解决方案。
sudo yum install python36-devel
(将 36 替换为您的 Python 3 版本)。
如果您使用的是 Mac,则可以使用自制软件
brew install postgresql
所有其他选项都在这里:http://www.postgresql.org/download/macosx/
祝你好运
virtualenv
中安装 postgresql。
在带有 Postgres.app 版本 9.3.2.0 RC2 的 Mac Mavericks 上,我需要在安装 Postgres 后使用以下代码:
sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2
来设置路径。
我最近在 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
到目前为止的答案太像魔术食谱了。您收到的错误告诉您 pip 找不到 PostgreSQL 查询库的所需部分。这可能是因为您将它安装在操作系统的非标准位置,这就是消息建议使用 --pg-config 选项的原因。
但更常见的原因是您根本没有安装 libpq。这通常发生在您没有安装 PostgreSQL 服务器的机器上,因为您只想运行客户端应用程序,而不是服务器本身。每个操作系统/发行版都不同,例如在 Debian/Ubuntu 上,您需要安装 libpq-dev。这允许您针对 PostgreSQL 查询库编译和链接代码。
大多数答案还建议安装 Python 开发库。当心。如果您只使用发行版安装的默认 Python,那将起作用,但如果您有较新的版本,则可能会导致问题。如果您在这台机器上构建了 Python,那么您已经拥有编译 C/C++ 库以与 Python 交互所需的开发库。只要您使用正确的 pip 版本,即安装在与 python 二进制文件相同的 bin 文件夹中的 pip 版本,那么您就一切就绪。无需安装旧版本。
如果你使用 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/ 中的安装过程进行操作
在 Debian/Ubuntu
:
首先安装和构建 psycopg2
包的依赖项:
# apt-get build-dep python-psycopg2
然后在您的虚拟环境中,编译并安装 psycopg2
模块:
(env)$ pip install psycopg2
运行以下命令,你应该没问题
$ apt-get update
$ apt install python3-dev libpq-dev
$ pip3 install psycopg2
在您首先在 Windows 中安装到基本 python 安装的位置之前,我已经这样做了。
然后,手动将安装的 psycopg2 复制到 virtualenv 安装。
它不漂亮,但它有效。
venv
中使用 pip 安装感到目瞪口呆。我能够在虚拟环境之外安装,没问题。然后,我从我的 Python 包库目录中复制了该文件,并将其粘贴到 venv
中。我的预感是,因为我的 Python 版本是 Anaconda 发行版,所以假设/使用的路径有问题。
在安装 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
解决了这个问题。
除了安装所需的软件包,我还需要手动将 PostgreSQL bin 目录添加到 PATH。
$vi ~/.bash_profile
在 export PATH
之前添加 PATH=/usr/pgsql-9.2/bin:$PATH
。
$source ~/.bash_profile
$pip install psycopg2
对于 MacOS,
使用以下命令安装 psycopg2,就像魅力一样!
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2
在 Windows XP 上,如果未安装 postgres,则会出现此错误...
我使用 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
Psycopg2 依赖于 Postgres 库。在 Ubuntu 上,您可以使用:
apt-get install libpq-dev
然后:
pip install psycopg2
我已经为此奋斗了好几天,终于想出了如何让“pip install psycopg2”命令在 Windows 的 virtualenv 中运行(运行 Cygwin)。
我正在点击“找不到 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 版本更可取,因为本机版本会运行得更快)。
在 OpenSUSE 13.2 上,这修复了它:
sudo zypper in postgresql-devel
对于低级 Windows 用户来说,不得不从下面的链接安装 psycopg2,只需将其安装到您设置的任何 Python 安装中即可。它会将名为“psycopg2”的文件夹放在 python 安装的站点包文件夹中。
之后,只需将该文件夹复制到您的 virtualenv 的 site-packages 目录,您就不会遇到任何问题。
这是您可以找到安装 psycopg2 的可执行文件的链接
http://www.lfd.uci.edu/~gohlke/pythonlibs/
在 Ubuntu 上,我只需要 postgres 开发包:
sudo apt-get install postgresql-server-dev-all
*在虚拟环境中测试
我可以将它安装在 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 -l
中列出的数据库、主机 localhost、默认数据库端口 5432、使用 \du
列出的用户。
在 Arch 基础发行版中:
sudo pacman -S python-psycopg2
pip2 install psycopg2 # Use pip or pip3 to python3
在 OSX 10.11.6 (El Capitan) 上
brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2
brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/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 上安装
以下是在 Mac OS Big Sur 上安装 psycopg2 时对我和我的团队成员有用的步骤,并且我们已经针对 Big Sur 进行了广泛的测试。在开始之前,请确保您已经安装了 Xcode 命令行工具。如果没有,请从 Apple Developer 站点安装它。以下步骤假设您已安装自制软件。如果您还没有安装自制软件,请安装它。最后但并非最不重要的一点是,它还假设您已经在系统中安装了 PostgreSQL,如果没有,则安装它。不同的人有不同的偏好,但 official PostgreSQL site via Enterprise DB installer 上的默认安装方法是大多数人的最佳方法。
通过以下方式在 .zshrc 文件中建立与 pg_config 文件的链接:export PATH="$PATH:/Library/PostgreSQL/12/bin:$PATH"。这样,您就可以与 /Library/PostgreSQL/12/bin 文件夹中的 pg_config 文件建立链接。因此,如果您的 PostgreSQL 安装是通过其他方式安装的,例如 Postgres.app 或通过 Homebrew 安装的 Postgres,那么您需要在 .zshrc 文件中包含该 PostgreSQL 安装的 bin 文件夹中指向 pg_config 文件的链接,因为 psycopg2 依赖于此。
使用命令 brew install openssl 通过 Homebrew 安装 OpenSSL。原因是作为 psycopg2 基础的库 libpq 使用 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 建议的,并且已直接从那里获取。
导出 PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
导出 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 库。根据文档
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 环境中工作,这也有效。 NB pip install psycopg2-binary 应该避免,因为根据 psycopg2 库的开发人员
不鼓励在生产中使用 -binary 包,因为过去它们在多线程环境中被证明是不可靠的。这可能已在较新的版本中得到修复,但我从未设法重现该故障。
不定期副业成功案例分享
*-dev
包包含编译使用库提供的函数的应用程序从源代码 所需的文件(因为psycopg2
使用libpq
和python
库,其中其他)。sudo apt-get install postgresql-server-dev-all
sudo apt-get install -y build-essential
安装 build-essential