我认为这实际上不属于StackOverflow,但是如果我错了……
首先,
python-dev不是Python,而是Ubuntu,Fedora或其他发行版。如果您下载,构建和安装Python,或从python.org运行任何二进制安装程序,则会
Python.h在适当的位置进行安装。许多linux发行版都喜欢将包分成子包,将只需要构建的内容移动到一个
-dev或类似的包中,对Python这样做绝对没有错,但是发行版仍在这样做。
其次,
Python.h不需要构建所有软件包,只需构建包含C扩展模块的软件包。由于许多软件包都是纯Python的,并且没有此类扩展模块,因此发行版的
pip软件包不需要其
python-dev软件包是有道理的。(就像发行版的
pip软件包可能不需要C编译器一样。)
第三,大多数为您提供一个
python-pip或类似软件包的发行版也会为您提供流行软件包的软件包。如果以这种方式安装它们
python-dev,则由于它们是二进制软件包,则将不需要它们(以及C编译器),或者您将需要它们,但它们将作为依赖项(rpm,deb等)被引入。有一种方法可以指定单独的“构建”和“运行”依赖项。
但是,如果您落后于软件包管理器的后面并尝试安装软件包
pip(这是合理的做法),则软件包管理器将无法告诉您哪些软件包需要哪些依赖项,而
pip只能告诉您有关Python软件包的依赖项,因此没有什么可以强制执行的。



