为所有用户安装python包,而不会搞乱系统python安装

时间:2018-05-31 16:06:47

标签: python pipenv

我想将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,而不必执行位于隐藏目录中的文件。

P.S。理想的情况是,pipenv可以作为一个安全的'从我的发行版打包,但唉不是。我也知道virtualenvs,但我的印象更多的是开发和部署特定项目,并不一定是系统范围工具的理想选择(尽管我准备对此进行更正)。

2 个答案:

答案 0 :(得分:4)

不,你永远不会害怕修改系统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结合使用,以便更加安心。

答案 1 :(得分:1)

绝对使用Anaconda并查看有关如何使用conda环境的文档。另外一个好处是,您可以随身携带您的环境,以便在任何计算机上使用它,这使得在开发工作流程中记录包版本变得更加容易和清晰。享受!