许多基于python的包都有非python包的依赖关系。我特别想到的是lxml和cffi,但这种困境适用于PyPI上的许多包。这两个包都对非Python包(如libxml2 dev、libxslt dev、zlib1g dev和libffi-dev)有未公开的构建依赖关系。lxml和cffi的网站声明了其中一些依赖项,但似乎无法通过命令行来解决这一问题。在
因此,有成百上千个问题都是这样的:
pip install foo
fails with an error: "fatal error: bar.h: No such file or directory". How do I fix it?
这是对pip
的误用,还是这是它的工作原理?在运行pip
之前,有没有一种合理的方法来知道要安装哪些构建依赖项?我目前的做法是:
foo
的包。在pip install foo
foo
依赖于Python包bar
。
bar
构建失败,那么查看错误消息并猜测/google我需要安装什么非Python依赖项。在sudo apt-get install libbaz-dev
sudo pip install bar
bar
成功。在sudo pip uninstall foo
第4步特别烦人。显然pip
(version 1.5.4)首先安装请求的包,在任何依赖项之前。因此,如果任何依赖项失败,您不能仅仅要求pip
重新安装它,因为它认为它已经安装了。也没有只安装依赖项的选项,因此必须先卸载软件包,然后再重新安装。在
使用pip
是否有更智能的过程?在
这实际上是关于建议使用
apt-get
的答案的注释,但我没有足够的信誉点数来留下一个。在如果您经常使用virtualenv,那么通过
apt-get
安装python包会很麻烦,因为当安装在系统范围内的python包和安装在virtualenv中的python包试图相互交互时,您可能会遇到神秘的错误。我发现有一件事确实有帮助,那就是使用build-dep
特性。要构建matplotlib依赖项,例如:然后激活虚拟环境并执行
pip install matplotlib
。它仍将经历构建过程,但许多依赖关系将为您处理。在这是cran repositories在ubuntu中安装R包时的建议。在
对于大多数流行的软件包,有一个针对最近的ubuntu系统的解决方案。例如,我想安装
matplotlib
。当您订购pip install matplotlib
时,它通常会因为缺少依赖项而失败。在您可以改为使用
apt-get install python-matplotlib
。对于python3,可以使用apt-get install python3-matplotlib
相关问题 更多 >
编程相关推荐