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

我正在使用virtualenv进行Django项目,并将其连接到本地postgres数据库。当我运行这个项目的时候,

ImportError: No module named psycopg2.extensions

然后我使用这个命令来安装

pip install psycopg2

然后在安装期间,它给出以下错误。

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
178086 次浏览

我只是在终端上以根用户的身份运行这个命令,问题就解决了,

sudo apt-get install -y postgis postgresql-9.3-postgis-2.1
pip install psycopg2

sudo apt-get install libpq-dev python-dev
pip install psycopg2

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

sudo apt-get install postgresql

火:

sudo apt-get install python-psycopg2

最后:

sudo apt-get install libpq-dev

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

sudo apt-get install postgresql postgresql-contrib libpq-dev python-dev

然后我可以这样做:

 pip install psycopg2

对于Python 3,我做了:

sudo apt install python3-dev postgresql postgresql-contrib python3-psycopg2 libpq-dev

然后我就能做:

pip3 install psycopg2
你必须设置postgresql-server-dev-X。Y,其中x.y.your的服务器版本,它将在模块中安装libpq-dev和其他服务器变量,用于服务器端开发。 在我的例子中是

apt-get install postgresql-server-dev-9.5

读取包列表…完成 构建依赖树读取状态信息…做了 以下包已自动安装,不再安装 需要:libmysqlclient18 mysql-common使用'apt-get autoremove'来删除 移除它们。将安装以下额外包:
. zip 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

他们改变了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

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

sudo apt install libpq-dev
pip install psycopg2

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

只需安装libpq-dev

$ sudo apt-get install libpq-dev

运行下面的命令;

sudo apt-get install python-pip python-dev libpq-dev postgresql postgresql-contrib
pip install psycopg2

以我为例,当我在Ubuntu机器上运行pip install -r requirements.txt来安装带有PostgreSQL数据库的Django项目的所有包时,我遇到了这个错误和许多其他安装错误。

为了解决这个问题,我运行了以下命令:

sudo apt install postgresql postgresql-contrib


sudo apt install libpq-dev


sudo apt install python3-dev


sudo apt install python3-pip


sudo apt install python3-psycopg2


pip3 install psycopg2


pip3 install psycopg2-binary


另外,还要检查Ubuntu、Python和Psycopg版本是否兼容。

另外,pip install aiopg,解决问题时,我遇到它第二次。