您需要安装postgresql-server-dev-XY来构建服务器端扩展,或者安装libpq-dev来构建客户端应用程序

Muh*_*aqi 207 python django postgresql

我正在使用virtualenv处理Django项目并将其连接到本地postgres数据库.当我运行项目时说,

ImportError: No module named psycopg2.extensions
Run Code Online (Sandbox Code Playgroud)

然后我用这个命令安装

pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

然后在安装过程中出现以下错误.

Downloading/unpacking psycopg2==2.4.4
  Downloading psycopg2-2.4.4.tar.gz (648kB): 648kB downloaded
  Running setup.py (path:/home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2/setup.py) egg_info for package psycopg2

    Error: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.

    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: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.



----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2
Storing debug log for failure in /home/muhammadtaqi/.pip/pip.log
Run Code Online (Sandbox Code Playgroud)

Meg*_*tes 427

使用以下命令,这将解决错误:

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

火了:

sudo apt-get install python-psycopg2
Run Code Online (Sandbox Code Playgroud)

最后:

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

  • 我只需要客户端库."sudo apt-get install libpq-dev"为我解决了这个问题.谢谢 (23认同)
  • 谢谢!`sudo apt-get install libpq-dev`为我工作! (16认同)
  • 我发现除了让它最终工作之外我还必须安装`sudo apt-get install python-dev` (6认同)
  • 使用 `sudo apt-get install python3-psycopg2` 添加到 python3 (3认同)

Muh*_*aqi 60

我只是从终端运行此命令作为根,问题解决了,

sudo apt-get install -y postgis postgresql-9.3-postgis-2.1
pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

要么

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

  • 非常感谢,`libpq-dev`和`python-dev`做了必要的魔术 (5认同)
  • `postgis`?woo (2认同)

ruh*_*art 26

对我来说这个简单的命令解决了这个问题

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

然后我可以这样做:

 pip install psycopg2
Run Code Online (Sandbox Code Playgroud)


小智 20

只需安装libpq-dev

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


小智 13

他们更改了psycopg2的包装。安装二进制版本为我解决了此问题。如果您想自己编译二进制文件,以上答案仍然有效。

参见http://initd.org/psycopg/docs/news.html#what-s-new-in-psycopg-2-8

默认情况下不再安装二进制软件包。必须明确使用“ psycopg2-binary”软件包。

还有http://initd.org/psycopg/docs/install.html#binary-install-from-pypi

因此,如果您不需要编译自己的二进制文件,请使用:

pip install psycopg2-binary
Run Code Online (Sandbox Code Playgroud)

  • `psycopg2-binary` 不得在生产中使用,因为它会导致一些错误。 (3认同)
  • 你先生救了我的命 (2认同)
  • `psycopg2-binary` 不应在生产中使用:http://initd.org/psycopg/docs/install.html#binary-install-from-pypi (复制文本:psycopg2-binary 包供初学者使用无需满足构建要求即可使用 Python 和 PostgreSQL。如果您是依赖于 psycopg2 的发布包的维护者,则不应使用“psycopg2-binary”作为模块依赖项。对于生产使用,建议您使用来源分布。) (2认同)

Gar*_*ett 12

对于Python 3,我做了:

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

然后我能够做到:

pip3 install psycopg2
Run Code Online (Sandbox Code Playgroud)


Max*_*kov 9

您必须设置postgresql-server-dev-XY,其中XY是您的服务器版本,它将在模块中安装libpq-dev和其他服务器变量以进行服务器端开发.就我而言

apt-get install postgresql-server-dev-9.5
Run Code Online (Sandbox Code Playgroud)

读取包列表...完成构建依赖关系树读取状态信息...完成以下包是自动安装的,不再需要:libmysqlclient18 mysql-common使用'apt-get autoremove'删除它们.将安装以下额外的软件包:
libpq-dev建议的软件包:postgresql-doc-10将安装以下新软件包:libpq-dev postgresql-server-dev-9.5

在你的情况下

sudo apt-get install postgresql-server-dev-X.Y
sudo apt-get install python-psycopg2
Run Code Online (Sandbox Code Playgroud)


Che*_*o R 5

我在 Ubuntu 18.04 上使用虚拟环境,因为我只想将其安装为客户端,所以我只需要做:

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

并且安装没有问题。当然,您可以像其他答案所说的那样使用二进制文件,但我更喜欢这个解决方案,因为它是在 requests.txt 文件中说明的。