使用 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 安装软件包有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
1、用apt-get和dpkg安装软件两种方式有啥不同 2、用apt-get的安装方式会把软件一般安装在啥位置
ubuntu 16.04 安装玩QQ后,更新或apt-get报错
Java 中 给一个object 赋值属性, 既可以用构造函数的方式,也可以用setXXXX()的方式,而它们之间有啥区
安装pip3遇到:E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solu