我正在尝试在Ubuntu机器上部署一个Django网站。我需要安装Psycopg2和PIL,但似乎我可以使用apt-get或pip来安装它们。这两种方法安装有什么区别吗?我知道使用pip,我可以将其安装到虚拟环境中,但使用apt-get会将其安装在全局Python环境中。
你可能已经知道apt-get的好处。自动更新通知,其他需要这些工具的apt安装包知道它们已安装等。
使用pip,你知道你在安装时得到的是最新版本,可以安装到非默认版本的Python中,也可以安装到虚拟环境中。
如果你不需要pip提供的任何功能,并且通常不需要安装其他Python软件包,这些软件包在APT上不可用,那么请使用APT版本。
许多回答这个问题的人都忽略了使用 apt-get
的一个优势:
apt-get
是预编译的,因此安装速度比pip
快得多。
要安装numpy、matplotlib、pandas和其他scipy相关模块,apt-get
只需要几秒钟;而pip
可能需要10分钟以上。
如果您具有root访问权限并且不介意使用略旧版本的软件,那么使用apt-get
是一种快速又无忧的选择。
您需要注意的是,包管理器中的内容经过了一些集成测试,而在Pypi中的内容未经测试。
Pypi适用于开发。
在生产环境中,您可能会选择使用Pypi,但很快您会发现您始终可以依赖包管理器中的内容...
你应该使用哪一个: apt-get和pip都是成熟的软件包管理器,安装时会自动安装任何其他软件包依赖项。你可以随意使用其中任何一个。然而,如果你需要安装特定版本的Python软件包,或者在虚拟环境中安装软件包,或者安装仅托管在PyPI上的软件包,则只有pip可以帮助你解决这个问题。否则,如果你不介意将软件包安装在系统范围内的位置,那么无论你使用apt-get还是pip都没有太大关系。
应该使用哪一个: apt-get 和 pip 都是成熟的包管理器,它们在安装时会自动安装其他依赖包。你可以根据自己的喜好任选其一。但是,如果你需要安装特定版本的 Python 包,或者在虚拟环境中安装包,或者安装仅托管在 PyPI 上的包,那么只有 pip 可以帮助你解决这些问题。否则,如果你不介意将包安装到系统范围内的位置,那么无论你使用 apt-get 还是 pip 都没有太大关系。
我建议使用pip安装Python软件包,因为一些操作系统的软件包管理器会对软件包进行自定义,可能会破坏或更改软件包的行为。
如果您需要全局安装软件包:
$ sudo pip install PACKAGE
它将尝试从PyPI或项目链接下载您的软件包。