python - 为所有用户安装一个python包而不弄乱系统python安装
问题描述
我想将Pipenv安装到一台机器上,以便该机器的所有用户都可以使用它,但我也不想弄乱系统 Python 设置。
我可以运行sudo pip install pipenv
,但这会继续并更改系统 Python 中安装的一堆软件包的版本(我使用的是 Scientific Linux 7.4)。我宁愿让系统 Python 与我的 linux 发行版提供的完全一样(因为我已经读过,弄乱系统 Python 是一个坏主意,因为核心系统工具可能以某种方式依赖它)。
我可以,pip install --user pipenv
但只有我的用户可以使用 pipenv。
所以两个问题:
1. 我是否不必要地害怕修改系统 Python?在系统 Python 中更新包真的可以吗?
2. 如果我的谨慎是有道理的,那么在pip install
不修改系统 Python 的情况下,对于所有用户来说,最好的方式(即 Pipenv 等工具)是什么?
理想情况下,我希望用户能够通过键入来使用 pipenv pipenv
,而不必执行位于不起眼目录中的文件。
PS 理想的情况是 pipenv 可以作为我的发行版中的“安全”包提供,但可惜不是。我也知道 virtualenvs,但我的印象是它们更多地用于特定项目的开发和部署,而不一定是系统范围工具的理想选择(尽管我准备对此进行更正)。
解决方案
不,你永远不会太害怕修改系统 Python。你的谨慎是有道理的。
我建议您让所有用户共享一个全局(但非系统)Python 安装,无论是来自官方发行版、Anaconda、pyenv 的 python-build 还是自编译源。然后,每个用户都可以在各自的主目录中执行自己的pip install --user
操作,或者您可以作为 sudoer 将全局可用的工具安装到自定义管理的、非系统但全局的 Python 中。
编辑:我忘了提到您也可以使用虚拟环境和符号链接来执行此操作。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 结合使用,让您更加安心。
推荐阅读
- sql - Where 子句和 Join on 子句中的别名
- javascript - TypeError:部署在 Heroku 上的 Strapi 应用仅支持绝对 URL
- java - 使用 Quarkus 和 RestEasy 上传多个文件
- mysql - Float 的十六进制对话 - Big Endian
- r - 如何将以下代码变成for循环?
- swagger - 在大摇大摆中,我可以将整个帖子请求正文用作纯文本参数吗?
- node.js - 在 nodejs 中登录 JWT API
- angular - firestore 集合,检索要存储和使用的字段值
- javascript - Interact.js dropzone 事件不会触发
- knockout.js - 在 Knockout.js 视图中,何时将 observable 作为函数调用?