如何获取更多信息:"system",包括版本



我在MacOS上,通过brew安装了最新的python。几个月前,我开始使用pyenv,以便能够在最新的python和一个在python v3.8上修复的项目之间切换。我想我已经准备好了,但我很困惑。pyenv拒绝向我显示有关system:的信息

$ pyenv versions
* system (set by /Users/<user>/.pyenv/version)
3.8.6
$ pyenv version system
system (set by /Users/<user>/.pyenv/version)
$ cat ~/.pyenv/version
system

如何让pyenv显示system的版本和/或位置??很明显,当系统python正在使用时,我可以获得它的信息,但为什么pyenv没有显示任何关于它的信息?显示有关当前配置的信息似乎是配置管理工具的基本功能。

相比之下,当我运行apt list --installed时,它会显示安装了什么,无论是我自己安装的还是与操作系统捆绑安装的。它不仅仅显示系统安装的东西的占位符。

所以我对pyenv这样做感到沮丧。

编辑:哇,nvm也是这样。怎样为什么?为什么这些工具内置了对系统配置的无视?

Pyenv是一个填充程序工具。它用于拦截对pythonpip的调用,并透明地为这些命令提供正确的二进制文件。当您调用python -m some_module时,pyenv将找到对该调用有意义的正确python二进制文件,因为它是由.python-version文件本地设置的,或者是由当前shell使用pyenv shellpyenv activate命令设置的。

Pyenv尽量不干扰当前的python安装,因为环境系统可能会使用这些工具,并且应该继续使用他们已经使用的任何版本。因此,它简单地将当前存在的二进制文件打包为"二进制文件";系统";并且不会触摸它,以便在安装pyenv之前的现有系统保持以前的工作状态。

作为一种最佳实践,我建议您创建一个新的环境,并用pyenv global将其设置为不同的系统(例如pyenv install 3.9.10 && pyenv virtualenv 3.9.10 myglobal && pyenv global myglobal(,这样您的默认应用程序python就不同于操作系统python,因此您就不会扰乱系统;让系统保持原样。如果你想检查什么是系统,你可以激活它并正常调用它,pyenv activate system ; python --version会显示版本,但这不是你首先应该做的事情,所以pyenv不支持它。

pyenv在执行以下操作时通知您有系统版本:pyenv versions

如果您这样做:pyenv global system

这实际上并没有像其他版本那样设置你:

类似pyenv global 3.11

确定您的";系统";版本为:

/usr/bin/python3 --version
Python 3.9.6

假设您使用的是Python3,这适用于装有brew的Mac OSX和python,但可能不适用于您的系统。

相关内容

最新更新