我试图使用C扩展名文件构建共享库,但首先必须使用以下命令生成输出文件:
gcc -Wall utilsmodule.c -o Utilc
执行命令后,我收到以下错误消息:
> utilsmodule.c:1:20: fatal error: Python.h: No such file or directory
compilation terminated.
我已经在互联网上尝试了所有建议的解决方案,但问题仍然存在。我对Python.h没有问题。我设法在我的机器上找到了该文件。
我试图使用C扩展名文件构建共享库,但首先必须使用以下命令生成输出文件:
gcc -Wall utilsmodule.c -o Utilc
执行命令后,我收到以下错误消息:
> utilsmodule.c:1:20: fatal error: Python.h: No such file or directory
compilation terminated.
我已经在互联网上尝试了所有建议的解决方案,但问题仍然存在。我对Python.h没有问题。我设法在我的机器上找到了该文件。
当前回答
如果您已经安装了Python,并且希望链接到特定的Python版本,则可以从Python获取相关的include路径。
>>> import sysconfig
>>> sysconfig.get_path('include')
'/usr/include/python3.10' # Example output
您可以使用shell脚本手动指定特定python版本的包含路径/构建:
#!/bin/sh
python_include=$(python3.10 -c "import sysconfig; print(sysconfig.get_path('include'))")
gcc -Wall utilsmodule.c -o Utilc -I"$python_include"
其他回答
尝试apt文件。很难记住丢失文件所在的包名。它是通用的,适用于任何包文件。
例如:
root@ubuntu234:~/auto# apt-file search --regexp '/Python.h$'
pypy-dev: /usr/lib/pypy/include/Python.h
python2.7-dbg: /usr/include/python2.7_d/Python.h
python2.7-dev: /usr/include/python2.7/Python.h
python3.2-dbg: /usr/include/python3.2dmu/Python.h
python3.2-dev: /usr/include/python3.2mu/Python.h
root@ubuntu234:~/auto#
现在你可以做出专家猜测,从中选择哪一个。
在AWS API(centOS)中
yum install python27-devel
Cygwin解决方案
您需要安装python2-devel或python3-devel包,具体取决于您使用的Python版本。
您可以使用Cygwin.com上的32位或64位setup.exe(取决于您的安装)快速安装它。
示例(如果需要,请修改setup.exe的文件名和Python的主要版本):
$ setup.exe -q --packages=python3-devel
您还可以查看我的另一个答案,以获得从命令行安装Cygwin软件包的更多选项。
如果您使用带有3.6 python的virtualenv(现在是边缘),请确保安装匹配的python 3.6 dev sudo apt-get install python3.6-dev,否则执行sudo python3 dev将安装python dev 3.3.3-1,这不会解决问题。
CentOS 7:
sudo yum install python36u-devel
我按照这里的说明在几个虚拟机上安装python3.6:https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-centos-7然后能够构建mod_wsgi并使其与python3.6 virtualenv一起工作