我正在尝试使用c扩展名文件构建共享库,但首先必须使用以下命令生成输出文件:
gcc -Wall utilsmodule.c -o Utilc
执行命令后,我收到以下错误消息:
> utilsmodule.c:1:20: fatal error: Python.h: No such file or directory
compilation terminated.
我在互联网上尝试了所有建议的解决方案,但问题仍然存在。我对这件事没有意见 Python.h
. 我设法在我的机器上找到了这个文件。
30条答案
按热度按时间vltsax251#
看起来您尚未正确安装python开发的头文件和静态库。请使用软件包管理器在系统范围内安装它们。
对于
apt
(ubuntu、debian…)对于
yum
(centos,rhel…)对于
dnf
(软呢帽…)对于
zypper
(opensuse…):对于
apk
(高山…)对于
apt-cyg
(cygwin…)s5a0g9ez2#
在ubuntu上,我运行的是Python3,我必须安装它
如果要使用未链接到python3的python版本,请安装相关的python3.x-dev包。例如:
jw5wzhpr3#
特别是对于Python3.7和ubuntu,我需要
sudoapt安装libpython3.7-dev
. 我想在某些时候,名字从
pythonm.n-dev
对这个。类似地,对于python 3.6、3.8和3.9:
sudo apt install libpython3.6-dev
sudo apt install libpython3.8-dev
sudo apt install libpython3.9-dev
monwx1rj4#
你必须做两件事。
安装python开发包,对于debian/ubuntu/mint,使用以下命令完成:
第二件事是,默认情况下,include文件不在include路径中,python库也不与可执行文件链接。您需要添加以下标志(相应地替换python版本):
换句话说,编译命令应该是:
t40tm48m5#
如果您使用的是覆盆子pi:
b1payxdu6#
在fedora上,为python 2运行以下命令:
对于python 3:
kx7yvsdv7#
如果使用tox在多个版本的python上运行测试,则可能需要为正在测试的每个版本的python安装python开发库。
jvidinwx8#
确保操作系统附带python开发文件。
您不应该硬编码库并包含路径。相反,请使用pkg config,它将为您的特定系统输出正确的选项:
您可以将其添加到gcc行:
ctrmrzij9#
cygwin的解决方案
你需要安装这个软件包
python2-devel
或python3-devel
,具体取决于您使用的python版本。您可以使用32位或64位
setup.exe
(取决于您的安装)从cygwin.com下载。示例(修改)
setup.exe
的文件名和python的主要版本(如果需要):您还可以查看我的另一个答案,从命令行获得更多安装cygwin软件包的选项。
q5iwbnjs10#
对我来说,把它改成这样很有效:
我找到了文件
/usr/include/python2.7/Python.h
,自/usr/include
已在包含路径中,则python2.7/Python.h
应该足够了。也可以从命令行添加include路径-
gcc -I/usr/lib/python2.7
(谢谢@erm3nda)。uoifb46i11#
在aws api(centos)中
wsewodh212#
aws ec2安装正在运行的python34:
sudo yum install python34-devel
tzcvj98z13#
如果您将virtualenv与3.6 python(立即使用edge)一起使用,请确保安装匹配的python 3.6开发人员
sudo apt-get install python3.6-dev
,否则执行sudo python3-dev
将安装python dev 3.3.3-1,但这并不能解决问题。w1jd8yoj14#
在我的例子中,ubuntu的修复方法是安装软件包
libpython-all-dev
(或libpython3-all-dev
如果您使用python 3)。ej83mcc015#
情况不一样,但它对我也适用,现在我可以将swig与python3.5结合使用:
我试图编译:
使用python 2.7可以很好地工作,而不是使用我的3.5版:
existe_wrap.c:147:21:致命错误:python.h:未终止existe el archivo o el directorio编译。
在我的ubuntu 16.04安装中运行后:
现在我可以毫无问题地编译python3.5: