使用 pip 与 apt-get 安装软件包有啥区别?

Posted

技术标签:

【中文标题】使用 pip 与 apt-get 安装软件包有啥区别?【英文标题】:What is the difference between installing a package using pip vs. apt-get?使用 pip 与 apt-get 安装软件包有什么区别? 【发布时间】:2011-10-16 00:21:36 【问题描述】:

我正在尝试在 Ubuntu 机器上部署 Django 站点。我需要安装 Psycopg2 和 PIL,但似乎我可以使用 apt-get 或 pip 安装它们。两种安装方式有区别吗?我知道使用 pip,我可以将它安装到虚拟环境中,但是使用 apt-get 可以将它安装在全局 python 环境中。

【问题讨论】:

【参考方案1】:

您可能已经知道 apt-get 的好处。自动更新通知、其他需要这些工具的 apt 安装包知道它们已安装,等等。

使用 pip,您知道在安装它时您将获得最新版本,您可以安装到 Python 的非默认版本,也可以安装到 virtualenv。

如果您不需要 pip 提供的任何功能,并且您不必经常安装 APT 不可用的其他 Python 包,请使用 APT 版本。

【讨论】:

“使用 pip,您知道在安装它时您将获得最新版本”,这可能是一个关键点,我想强调一点,当您通过 apt 安装时您通常受限于您的发行版支持的软件包版本。【参考方案2】:

这个问题的大多数答案都忽略了使用apt-get 的优势之一:

apt-get预编译的,它比pip 安装更快

安装 numpy、matplotlib、pandas 和其他 scipy 相关模块,apt-get 只需几秒钟; pip可以轻松消耗10min+。

如果您有 root 访问权限并且不介意版本有点过时,apt-get 是快速且无忧的选择。

【讨论】:

自从wheel出现以来,pip也提供了二进制包。 似乎并非所有软件包都有可用的***,至少对于我使用的系统而言。尤其是数学包,如 numpy、pandas、matplotlib 等。【参考方案3】:

您应该知道,包管理器中的内容经过了一些集成测试,而 Pypi 中的内容未经测试。

Pypi 适合开发。

在生产环境中,您可能会使用 Pypi,但您很快就会知道您始终可以依赖包管理器中的内容...

【讨论】:

【参考方案4】:

我始终建议使用 pip 安装 Python 包,因为一些操作系统包管理器会自定义包,它可能会破坏或更改包的行为。

如果需要全局安装包:

$ sudo pip install PACKAGE

它会尝试从PyPI 或项目的链接下载你的包。

【讨论】:

【参考方案5】:

您应该使用哪一个: apt-get 和 pip 都是成熟的包管理器,它们在安装时会自动安装任何其他包依赖项。您可以随意使用任何人。但是,如果您需要安装特定版本的 python-package,或者将包安装在 virtualenv 中,或者安装仅托管在 PyPI 上的包;只有 pip 可以帮助您解决该问题。否则,如果您不介意将软件包安装在系统范围的位置,那么使用 apt-get 还是 pip 并不重要。

【讨论】:

【参考方案6】:

我发现了一些关于这个的东西。 我的 ubuntu 有 python 版本 3.6 和 3.7。 apt install python3-xxx 时,xxx 会安装在 /usr/lib/python3/dist-packages,但是 pip3 install xxx 会安装在 /usr/local/lib/python3.7(我的默认 python 版本)/dist-packages。当将python更改为3.6版时,pip3安装的xxx无法工作,而apt安装的工作正常。

【讨论】:

【参考方案7】:

有时名称不同:

sudo apt install libopencv-dev python3-opencv

pip install opencv-python

但有时是一样的:

【讨论】:

以上是关于使用 pip 与 apt-get 安装软件包有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

sudo apt-get 与 yum安装有啥区别

1、用apt-get和dpkg安装软件两种方式有啥不同 2、用apt-get的安装方式会把软件一般安装在啥位置

ubuntu 16.04 安装玩QQ后,更新或apt-get报错

Java 中 给一个object 赋值属性, 既可以用构造函数的方式,也可以用setXXXX()的方式,而它们之间有啥区

ubuntu下命令怎么看查看pip版本

安装pip3遇到:E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solu