【发布时间】:2011-10-16 00:21:36
【问题描述】:
我正在尝试在 Ubuntu 机器上部署 Django 站点。我需要安装 Psycopg2 和 PIL,但似乎我可以使用 apt-get 或 pip 安装它们。两种安装方式有区别吗?我知道使用 pip,我可以将它安装到虚拟环境中,但是使用 apt-get 可以将它安装在全局 python 环境中。
【问题讨论】:
标签: python linux ubuntu pip apt-get
我正在尝试在 Ubuntu 机器上部署 Django 站点。我需要安装 Psycopg2 和 PIL,但似乎我可以使用 apt-get 或 pip 安装它们。两种安装方式有区别吗?我知道使用 pip,我可以将它安装到虚拟环境中,但是使用 apt-get 可以将它安装在全局 python 环境中。
【问题讨论】:
标签: python linux ubuntu pip apt-get
您可能已经知道 apt-get 的好处。自动更新通知、其他需要这些工具的 apt 安装包知道它们已安装,等等。
使用 pip,您知道在安装它时您将获得最新版本,您可以安装到 Python 的非默认版本,也可以安装到 virtualenv。
如果您不需要 pip 提供的任何功能,并且您不必经常安装 APT 不可用的其他 Python 包,请使用 APT 版本。
【讨论】:
这个问题的大多数答案都忽略了使用apt-get 的优势之一:
apt-get 是预编译的,它比pip 安装更快。
安装 numpy、matplotlib、pandas 和其他 scipy 相关模块,apt-get 只需几秒钟; pip可以轻松消耗10min+。
如果您有 root 访问权限并且不介意版本有点过时,apt-get 是快速且无忧的选择。
【讨论】:
您应该知道,包管理器中的内容经过了一些集成测试,而 Pypi 中的内容未经测试。
Pypi 适合开发。
在生产环境中,您可能会使用 Pypi,但您很快就会知道您始终可以依赖包管理器中的内容...
【讨论】:
我始终建议使用 pip 安装 Python 包,因为一些操作系统包管理器会自定义包,它可能会破坏或更改包的行为。
如果需要全局安装包:
$ sudo pip install PACKAGE
它会尝试从PyPI 或项目的链接下载你的包。
【讨论】:
您应该使用哪一个: apt-get 和 pip 都是成熟的包管理器,它们在安装时会自动安装任何其他包依赖项。您可以随意使用任何人。但是,如果您需要安装特定版本的 python-package,或者将包安装在 virtualenv 中,或者安装仅托管在 PyPI 上的包;只有 pip 可以帮助您解决该问题。否则,如果您不介意将软件包安装在系统范围的位置,那么使用 apt-get 还是 pip 并不重要。
【讨论】:
我发现了一些关于这个的东西。 我的 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安装的工作正常。
【讨论】: