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

时间:2015-01-31 16:10:30

标签: python django postgresql

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

10 个答案:

答案 0 :(得分:355)

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

sudo apt-get install postgresql
然后火了:

sudo apt-get install python-psycopg2

和最后:

sudo apt-get install libpq-dev

答案 1 :(得分:47)

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

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

答案 2 :(得分:21)

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

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

然后我可以做:

 pip install psycopg2

答案 3 :(得分:9)

你必须设置postgresql-server-dev-X.Y,其中X.Y.你的服务器版本,它将在模块上安装libpq-dev和其他服务器变量,用于服务器端开发。 就我而言,它是

apt-get install postgresql-server-dev-9.5
  

阅读包裹清单......完成   构建依赖树读取状态信息...完成   以下软件包已自动安装且不再存在   必需: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

答案 4 :(得分:8)

对于Python 3,我做了:

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

然后我能够做到:

pip3 install psycopg2

答案 5 :(得分:7)

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

答案 6 :(得分:7)

只需安装libpq-dev

$ sudo apt-get install libpq-dev

答案 7 :(得分:1)

运行以下命令;

        public bool IsObjectString(object obj)
        {
            return obj is string;
        }

答案 8 :(得分:0)

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

sudo apt install libpq-dev
pip install psycopg2

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

答案 9 :(得分:-1)

如果您使用的是Linux(可能还有其他系统,但我无法从经验中讲到),则在安装dev软件包时,需要确保准确了解所运行的python版本。

使用命令时

sudo apt-get install python3-dev

尝试运行时我仍然遇到一些错误

pip install psycopg2

在运行python 3.7时,我需要使用命令

sudo apt-get install python3.7-dev

很明显,如果您使用的是3.5版,则可以将7更改为5。