Skip to main content
 首页 » 编程设计

python之为所有用户安装一个 python 包,而不会干扰系统 python 安装

2025年05月04日23lvdongjie

我想安装 Pipenv到一台机器上,以便该机器的所有用户都可以使用它,但我也不想弄乱系统 Python 设置。

我可以运行 sudo pip install pipenv 但这会继续并更改安装在系统 Python 中的一堆软件包的版本(我使用的是 Scientific Linux 7.4)。我宁愿让系统 Python 与我的 linux 发行版提供的完全一样(正如我所读到的那样,与系统 Python 混淆是一个坏主意,因为核心系统工具可能依赖于它以某种方式存在)。

我可以执行 pip install --user pipenv 但只有我的用户可以使用 pipenv。

所以两个问题:

<强> 1。我是否不必要地害怕修改系统 Python?在系统 Python 中更新包真的可以吗?

<强> 2。如果我的谨慎是有道理的,那么在不修改系统 Python 的情况下为所有用户 pip install 东西(即 Pipenv 等工具)的最佳方法是什么?

理想情况下,我希望用户能够通过键入 pipenv 来使用 pipenv,而不必执行位于模糊目录中的文件。

附言理想情况是 pipenv 可以作为我的发行版中的“安全”包使用,但遗憾的是它不是。我也知道 virtualenvs,但我的印象是它们更多地用于特定项目的开发和部署,不一定是系统范围工具的理想选择(尽管我准备好在这一点上得到纠正)。

请您参考如下方法:

不,您永远不会害怕修改系统 Python。你的谨慎是有道理的。

我建议您让所有用户共享一个全局(但非系统)Python 安装,可以来自官方发行版、Anaconda、pyenv 的 python-build 或自编译源。然后每个用户都可以执行他们自己的 pip install --user 到他们各自的主目录,或者您可以作为 sudoer,将他们全局可用的工具安装到自定义管理的非系统中,而是全局 Python。


编辑:我忘了说你也可以用虚拟环境和符号链接(symbolic link)来做这件事。 Pipenv 的示例(您可以根据需要更改路径):

python3 -m venv /opt/venvs/pipenv 
/opt/venvs/pipenv/bin/pip install pipenv 
ln -s /opt/venvs/pipenv/bin/pipenv /opt/bin/pipenv 
 
python3 -m venv /opt/venvs/flake8 
/opt/venvs/pipenv/bin/pip install flake8 
ln -s /opt/venvs/pipenv/bin/flake8 /opt/bin/flake8 

这种方式可以安装多个工具而不会相互影响。您还可以将其与自定义管理的 Python 结合使用,让您更加安心。