如何`pip install`一个具有非Python依赖的包?
- 论坛
- 如何`pip install`一个具有非Python依赖的包?
9 浏览
如何`pip install`一个具有非Python依赖的包?
许多Python包在构建时依赖于非Python包。我特别想到的是lxml和cffi,但这个困境适用于PyPI上的许多包。这些包都依赖于像libxml2-dev、libxslt-dev、zlib1g-dev和libffi-dev这样的非Python包,但这些依赖关系并未在lxml和cffi的网站上明确声明,似乎无法从命令行中找到解决方法。
因此,Stack Overflow上有数百个类似以下形式的问题:
pip install foo
失败并显示错误:"fatal error: bar.h: No such file or directory"。如何修复?
这是对pip
的误用还是它的预期工作方式?有没有一种明智的方法来确定在运行pip
之前要安装哪些构建依赖关系?我目前的做法是:
- 我想安装一个名为
foo
的包。 pip install foo
foo
依赖于一个名为bar
的Python包。- 如果
bar
构建失败,则查看错误消息并猜测/搜索需要安装的非Python依赖。 sudo apt-get install libbaz-dev
sudo pip install bar
- 重复直到
bar
成功。
- 如果
sudo pip uninstall foo
- 重复整个过程直到没有错误消息。
第4步特别麻烦。显然,pip
(版本1.5.4)先安装请求的包,然后再安装任何依赖项。因此,如果任何依赖关系失败,你不能只是要求pip
再次安装它,因为它认为它已经安装了。也没有选项只安装依赖项,所以你必须先卸载包,然后重新安装。
有没有一种更智能的使用pip
的方法?