我一直在尝试安装依赖于setuptools的Python模块,显然该模块是使用apt安装的。然而,它似乎是错误的版本,所以我尝试使用pip安装它,只是为了看看是否有任何变化(剧透:显然没有任何变化)。
以下之间有什么区别(如果有)?
pip3 install setuptools
Run Code Online (Sandbox Code Playgroud)
和:
apt install python3-setuptools
Run Code Online (Sandbox Code Playgroud)
Mar*_*ler 21
\n\n如果有人能解释以下之间的差异(如果有),我将不胜感激:
\n
最高级别:当事情可能与您的系统发生冲突时,您永远不应该使用pip install
安装到系统(--system
或在--user
非默认的Linux发行版上,省略--user
),而这apt install
是非常安全的。
解释:
\napt
是 Linux 发行版的软件包安装工具。如今的 Linux 发行版主要致力于提供一种以相互协作的方式安装软件包而不破坏 \xe2\x80\x93 的方法,例如,如果您尝试安装 libreoffice 使用的库,但在如果版本与您的 libreoffice 不兼容,您的 linux 发行版工具会遗憾地告诉您,要执行您的命令,它必须卸载 libreoffice,因为它无法与您请求的版本一起使用。
事实上,您很少看到这种情况发生,这表明现代 Linux 发行版在这里做得有多好:通常,您可以安装的大多数软件都可以apt
很好地协同工作。
pip
另一方面,不知道您的计算机上还有哪些可能需要的其他软件。您告诉 pip 安装某个版本的某些内容,该版本甚至会破坏您启动系统 \xe2\x80\x93 的能力,它会继续执行此操作。
pip
是 python 特定的。它假设该机器上所有与Python有关的东西都是一种“公平游戏”并且可以任意处理。坦率地说,\xe2\x80\x93 几乎从来不是这种情况,例如,在 Fedora(您没有使用的另一个 Linux 发行版)上,您可以轻松地使用.dnf
apt
pip
那么,为什么pip
还存在呢?好吧,在某些情况下,pip 可以假设它看到的 python 的每一部分都在它的控制之下:Python 带来了一种称为虚拟环境的机制。在这些中,本身没有安装 python 模块,并且它们不会与计算机上的其他软件 \xe2\x80\x93 发生冲突,因为其他软件不知道环境。
使用它非常简单。您可以使用设置这样的环境
\npython3 -m venv ~/bertsexperiment\n
Run Code Online (Sandbox Code Playgroud)\n这会设置一个~/bertsexperiment
用于安装 Python 内容的文件夹。然后,您可以从任何您喜欢的地方“激活”该环境(真正做的只是更改一些环境变量)\xe2\x80\x93,但这只会影响当前进程以及从它开始的事情。尝试一下:
source ~/bertsexperiment/bin/activate\n
Run Code Online (Sandbox Code Playgroud)\n将设置此 shell,以便所有未来的 python 工具都将使用该文件夹作为“前缀”。
\n例如,如果您想在该 shell 中更新 setuptools,您可以在source
执行如上所示的激活脚本后运行pip3 install --upgrade setuptools
,它们将被安装到 virtualenv 中。
简而言之:
\napt
,因为让您的软件堆栈协同工作是您的发行版的工作pip
除非您打算将某些内容安装到仅用于当前项目而不是系统上其他任何内容的文件夹中,否则切勿使用。 归档时间: |
|
查看次数: |
4457 次 |
最近记录: |