应该是python-dev来安装pip

han*_*nap 14 python pip fatal-error

我发现许多人在使用pip安装python包时遇到麻烦,因为没有安装python-dev.主要是错误:

fatal error: Python.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

所以问题是:python-dev应该是pip的必需依赖吗?或者这只是某个使用pip安装的软件包的问题,​​如果是这样,是否有一些步骤可以确保用户在安装模块时不会遇到错误?

aba*_*ert 18

我不认为这实际上属于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包的依赖性,所以没有什么可以强制执行的.

  • 非常感谢,这个答案提供了很多见解.我不知道python-dev是一个与发行版相关的包(或者我会发布在ubuntu表单上!)同样有意义的是,Python只需要C扩展(因此.h,对吗?)我的主要目的是问这个问题的是很多人不熟悉编程和python,虽然他们可能已经阅读过最好用pip安装python包,可能会放弃并使用包管理器.对初学者来说,它看起来很破碎.这种感觉不是用户的错,但也许是改善python/distro交互的机会! (2认同)