sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
对于 yum ( CentOS, RHEL... ):
sudo yum install python-devel # for python2.x installs
sudo yum install python34-devel # for python3.4 installs
对于 dnf ( Fedora... ):
sudo dnf install python2-devel # for python2.x installs
sudo dnf install python3-devel # for python3.x installs
对于 zypper ( openSUSE... ):
sudo zypper in python-devel # for python2.x installs
sudo zypper in python3-devel # for python3.x installs
对于 apk ( Alpine... ):
# This is a departure from the normal Alpine naming
# scheme, which uses py2- and py3- prefixes
sudo apk add python2-dev # for python2.x installs
sudo apk add python3-dev # for python3.x installs
对于 apt-cyg ( Cygwin... ):
apt-cyg install python-devel # for python2.x installs
apt-cyg install python3-devel # for python3.x installs
25 回答
运行python34的AWS EC2安装:
sudo yum install python34-devel
在我的例子中,在Ubuntu中修复它的是安装包
libpython-all-dev
(如果使用Python 3则为libpython3-all-dev
) .尝试apt-file . 很难记住丢失文件所在的包名称 . 它是通用的,对任何包文件都很有用 .
例如:
现在,您可以专门猜测哪一个可供选择 .
这不是相同的情况,但它也适用于我,现在我可以使用 SWIG 与 Python3.5 :
我试图编译:
With Python 2.7 works fine, not with my version 3.5:
After run in my Ubuntu 16.04 installation:
Now I can compile without problems Python3.5:
对于那里的OpenSuse同志:
如果你使用带有3.6 python的virtualenv(现在是edge),请确保安装匹配的python 3.6 dev
sudo apt-get install python3.6-dev
,否则执行sudo python3-dev
将安装python dev 3.3.3-1,这将无法解决问题 .我设法解决了这个问题,并在一个命令中生成.so文件
看起来你没有正确安装python dev的头文件和静态库 . 使用包管理器在系统范围内安装它们 .
对于
apt
( Ubuntu, Debian... ):对于
yum
( CentOS, RHEL... ):对于
dnf
( Fedora... ):对于
zypper
( openSUSE... ):对于
apk
( Alpine... ):对于
apt-cyg
( Cygwin... ):在Ubuntu上,我运行的是Python 3,我不得不安装
如果要使用未链接到python3的Python版本,请安装相关的python3.x-dev软件包 . 例如:
你要做的两件事 .
安装Python的开发包,如果是Debian / Ubuntu / Mint,则使用命令完成:
第二件事是包含文件默认情况下不包含在include路径中,默认情况下Python库也不与可执行文件链接 . 您需要添加这些标志(相应地替换Python的版本):
换句话说,你的编译命令应该是:
如果您使用的是Raspberry Pi:
在Fedora上为Python 2运行这个:
对于Python 3:
如果您使用tox在多个版本的Python上运行测试,则可能需要为要测试的每个Python版本安装Python开发库 .
我想补充一下Cygwin的解决方案:
您需要 install the package python2-devel or python3-devel ,具体取决于您使用的Python版本 .
您可以使用32-bit或64-bit
setup.exe
(取决于您的安装)从Cygwin.com快速安装它 .示例(如果需要,修改
setup.exe
's filename and Python' s主要版本):您还可以查看我的other answer以获取更多选项,以便从命令行安装Cygwin的软件包 .
在AWS API(centOS)中
对我来说,改变它是有效的:
我找到了文件
/usr/include/python2.7/Python.h
,并且由于/usr/include
已经在包含路径中,那么python2.7/Python.h
就足够了 .您也可以从命令行添加包含路径 -
gcc -I/usr/lib/python2.7
(感谢@ erm3nda) .确保Python开发文件随操作系统一起提供 .
您不应该对库进行硬编码并包含路径 . 相反,使用pkg-config,它将为您的特定系统输出正确的选项:
您可以将它添加到您的gcc行:
对于CentOS 7:
我按照这里的说明在几个VM上安装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
我在ubuntu中安装coolprop时也遇到了这个错误 .
对于带有python 3.6的ubuntu 16.04
如果这不起作用,请尝试安装/更新
gcc
lib .当我尝试使用Python3.6在CentOS 7上安装ctds时发生此错误 . 我做了这里提到的所有技巧,包括
yum install python34-devel
. 问题是Python.h
在/usr/include/python3.4m but not in /usr/include/python3.6m
中找到 . 我试图使用--global-option
指向包含目录(pip3.6 install --global-option=build_ext --global-option="--include-dirs=/usr/include/python3.4m" ctds
) . 这导致链接ctds时找不到lpython3.6m
.最后有效的是修复Python3.6的开发环境需要用include和lib来纠正 .
Python.h需要包含在你的include中gcc的路径 . 无论使用哪种版本的python,例如如果它是3.6,那么它通常应该在
/usr/include/python3.6m/Python.h
中 .当然
python-dev
或libpython-all-dev
是(apt
)install
的第一件事,但如果这对我的情况没有帮助,我建议您安装sudo apt-get install libffi-dev
和sudo pip install cffi
的外部函数接口包 .如果您从
c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory
看到错误,这应该会有所帮助 .当您尝试删除
python3.5
并安装python3.6
时,通常会出现此问题 .所以当使用
python3
(其中python3 -V
=>python3.6
)安装一些所需的包python3.5
时会出现此错误 .通过安装
python3.6-dev
模块解决 .这意味着
Python.h
isn 't in your compiler' s默认包含路径 . 您是在系统范围内还是在本地安装它?你的操作系统是什么?您可以使用
-I<path>
标志指定编译器应查找标头的其他目录 . 您可能需要跟进-L<path>
,以便gcc可以使用-l<name>
找到您要链接的库 .如果您在Amazon Linux上使用Python 3.6(基于RHEL,但此处给出的RHEL答案不起作用):
有时甚至在安装python-dev之后错误仍然存在,如果缺少“gcc”,请检查错误 .
首先按https://stackoverflow.com/a/21530768/8687063中的说明下载,然后安装gcc
For apt (Ubuntu, Debian...):
For yum (CentOS, RHEL...):
For dnf (Fedora...):
For zypper (openSUSE...):
For apk (Alpine...):