psycopg:Python.h:没有这样的文件或目录

use*_*539 24 python psycopg2

我正在编译psycopg2并得到以下错误: Python.h:没有这样的文件或目录

如何编译它,Ubuntu12 x64.

Mic*_*rek 46

Python 2:

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

Python 3:

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

  • Python3.7 也有同样的问题。要安装,请运行“$sudo apt-get install python3.7-dev” (4认同)
  • Python3.9 也有同样的问题。要安装,请运行“$sudo apt-get install python3.9-dev” (3认同)
  • 对于 python 3.10 (Ubuntu 20.04): `$ sudo apt-get install python3.10-dev` (2认同)

I15*_*159 11

这是一个依赖性问题.

我在Ubuntu上解决了这个问题,因此在下面的示例中使用了apt-get.将其切换到适合您系统的包管理器.

对于任何当前的Python版本:

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

对于替代Python版本:

sudo apt-get install python<version>-dev
Run Code Online (Sandbox Code Playgroud)

例如3.5作为替代:

sudo apt-get install python3.5-dev
Run Code Online (Sandbox Code Playgroud)


erd*_*ola 8

如果你看看PostgreSQL的常见问题页面(http://initd.org/psycopg/docs/faq.html),你会发现他们建议安装pythons开发包,通常称之为python-dev.你可以通过安装

sudo apt-get install python-dev


Наг*_*мер 5

正如 psycopg 文档中提到的http://initd.org/psycopg/docs/install.html

\n\n
\n

Psycopg 是 \xc2\xa0libpq\xc2\xa0PostgreSQL 客户端库的 C 包装器。要从源安装它,您将需要:

\n
\n\n
    \n
  • C编译器
  • \n
  • Python 头文件
  • \n
\n\n

它们通常安装在诸如python-dev之类的包中,并且会出现一条消息错误,例如:Python.h:没有这样的文件或目录表明您错过了提到的 python 标头。

\n\n

你怎样才能解决它?首先,如果您没有使用虚拟环境,您需要检查您的虚拟环境或系统本身安装了哪个Python版本。您可以通过以下方式检查您的 python 版本:

\n\n
python --version \n
Run Code Online (Sandbox Code Playgroud)\n\n

之后,您应该安装与虚拟环境或系统上安装的相同的 python-dev 版本。例如,如果您使用,python3.7则应该安装

\n\n
apt-get install python3.7-dev \n
Run Code Online (Sandbox Code Playgroud)\n\n

希望我的回答对大家有帮助

\n