Python 似乎有多个包管理系统,当并行使用时会导致混乱和冲突。我希望得到一些关于如何使用这些工具以获得最佳系统状态的指导。
以下是我的问题:
- 说到 Python,有很多软件包安装工具:apt-get、pip、easy_install、conda 以及它们的 python3 版本。有人能解释一下什么时候应该使用特定的工具以及这些工具协同工作的概念吗?如果有人能给我一个文章链接,详细介绍这些系统,进行比较,并强调它们之间的差异,我将不胜感激。
- 使用 anaconda 安装和运行 python 工具是否可以解决使用多个 python 包工具的麻烦?
- 如果anaconda安装的python包已经存在于系统中,那么我们在使用它们时这两者如何协调?
答案1
apt
/ apt-get
、pip
和easy_install
之间的主要相似之处conda
在于它们都是包管理器;它们之间的差异比相似之处多。
让我们先从简单的事情开始。永远不要使用easy_install
超过pip
,原因在以下几个获得高度赞同的答案中得到了雄辩的解释:https://stackoverflow.com/q/3220404/486919。简而言之,easy_install
已经过时并且pip
永远是值得优先考虑的。
apt
/apt-get
您可以使用apt
或apt-get
在系统/全局级别安装 APT 存储库中的 Ubuntu 软件包,包括 Python 软件包。您需要使用 运行此命令sudo
。在 Ubuntu 存储库中,Python 2 软件包的名称以 开头,python
而 Python 3 软件包的名称以 开头python3
,因此,根据您打算使用的 Python 解释器的版本,可以清楚地知道需要安装哪些软件包。一些示例包括python-numpy
和python3-numpy
。
pip
pip
代表“Pip 安装软件包”或“Pip 安装 Python”,这是一个递归缩写。顾名思义,它用于pip
安装 Python 包仅有的。在系统/全局级别,您可以使用pip
为 Python 2安装sudo apt install python-pip
,使用 为 Python 3 安装sudo apt install python3-pip
。在 Ubuntu 中,pip install
默认为。如果您用pip install --user
替换,也会发生相同的情况。这意味着默认情况下,Python 软件包是基于每个用户安装的,并且pip
pip3
不是在系统/全局级别。这是一件好事,因为没有充分的理由让 Python 包默认对所有用户可用。您可以通过运行命令来全局安装它们sudo
,但正如我在https://askubuntu.com/a/802594/15003,这是一个安全风险,应该不是做完了。
管理 Python 依赖项的最佳方法是使用虚拟环境。例如,可以使用 virtualenv 安装sudo apt install virtualenv
。我在以下网址写了一个简短的回答:https://askubuntu.com/a/786625/15003但对于这个问题还有其他非常好的答案,你可以读一下。
conda
conda
是一个包管理器,它还允许您创建虚拟环境,因此它有点像pip
+ virtualenv
。根据https://stackoverflow.com/a/20994790/486919,conda
还可以“处理 Python 软件包之外的库依赖关系以及 Python 软件包本身”。我个人不会在我的 Ubuntu 机器上使用 Anaconda/Conda,因为pip
和virtualenv
已经足够满足我的需求,但你一定要看看conda
。
答案2
说到 Python,有很多软件包安装工具:apt-get、pip、easy_install、conda 以及它们的 python3 版本。有人能解释一下什么时候应该使用特定的工具以及这些工具协同工作的概念吗?如果有人能给我一个文章链接,详细介绍这些系统,进行比较,并强调它们之间的差异,我将不胜感激。
apt-get
它不是一个 Python 包管理器,它是一个包管理器对于 Ubuntu. 您使用它来安装 Ubuntu 软件。
至于为什么Python软件包里面,Ubuntu 像这样打包大多数 Python 模块:python-modulename
或python3-modulename
。这些 Ubuntu Python 模块已经过时了。使用pip
(或pip3
)。
pip
它是标准的 Python 包管理器。如有疑问,用这个。
conda
它是一个 Python 包管理器加上环境管理器也就是说,它会为你构建一个隔离的、全新的 Python 环境,让你可以冻结某个版本的特定模块,而不会影响系统 Python 等。
安装和运行 python 工具 anaconda 是否可以解决使用多个 python 包工具的麻烦?
首先,不是头痛。只是
$ pip install modulename
(或者pip3
对于 Python 3,因为 2 和 3 极不兼容。)
conda
其次,另一个 Python 包管理器,我认为它的软件包比 少,pip
并且只适用于冻结特定版本的系统库、Python 模块等。
如果anaconda安装的python包已经存在于系统中,那么我们在使用它们时这两者如何协调?
conda
覆盖已经存在的包。