我认为这实际上不属于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软件包的依赖项,因此没有什么可以强制执行的。