pyenv global似乎已经停止使用新版本的pyenv了。
pyenv --version
pyenv 2.0.4-8-gd209e061pyenv versions
system
* 2.7.5 (set by /home/user/horchee/.pyenv/.python-version)
3.6.5
3.6.9
pyenv global 3.6.5
pyenv versions
system
* 2.7.5 (set by /home/user/horchee/.pyenv/.python-version)
3.6.5
3.6.9不过,shell和local命令似乎起作用了。
知道怎么解决这个问题吗?
发布于 2021-12-20 14:48:50
我个人见过几件事情导致了这个问题。
第一个是我安装Anaconda的时候。我不得不在Anaconda之后移动pyenv配置块。这解决了那个案子的问题。
在第二个例子中,我发现了一个问题,让我想出了如何让它再次发挥作用:
https://github.com/pyenv/pyenv/issues/2026
基本上,我的配置文件中有这一行(在我的示例中是.zshrc,因为我最初使用的是ZSH):
eval "$(pyenv init -)"然后我把它改为这个,只是增加了第一行,它解决了我的情况下的问题。
eval "$(pyenv init --path)"
eval "$(pyenv init -)"在pyenv自述的高级配置部分中有关于此的详细信息:https://github.com/pyenv/pyenv#advanced-configuration
以下是该节的副本:
高级配置
跳过本节,除非您必须知道shell配置文件中的每一行都在做什么。
pyenv init是唯一跨越将额外命令加载到shell的行的命令。来自RVM,你们中的一些人可能会反对这个想法。
还请参阅控制Pyenv行为的环境变量的环境变量部分。
eval "$(pyenv init --path)":设置你的沙姆路径。这是pyenv正常工作的唯一要求。您可以通过将$(pyenv )/shims预置到您的$PATH中来手动完成此操作。eval "$(pyenv init - PATH )“应该在会话的登录shell启动脚本中运行,这样会话中的所有进程都可以访问Pyenv的功能,并且只能运行一次,避免了嵌套shell中的中断路径(例如,shell从编辑器/IDE开始)。
在Linux中,GUI管理器通常充当sh登录shell,在启动时运行/etc/profile和~/.profile。MacOS的GUI没有这样做,因此它的终端模拟器应用程序默认情况下以登录shell的形式运行它们的shell以进行补偿。
eval "$(pyenv init -)":安装自动完成。这完全是可选的,但非常有用。获取$(pyenv )/completions/pyenv.bash将设置这一点。对于Zsh用户,还有一个$(pyenv )/completions/pyenv.zsh。
令人毛骨悚然。有时,您需要重建您的shim文件。在init上这样做可以确保一切都是最新的。您始终可以手动运行pyenv重哈希。
将pyenv作为shell函数安装到当前shell中。此位也是可选的,但允许pyenv和plugins更改当前shell中的变量,从而使类似pyenv的命令成为可能。sh dispatcher不会做任何疯狂的事情,比如覆盖cd或黑入您的shell提示符,但是如果出于某种原因需要pyenv成为真正的脚本而不是shell函数,则可以安全地跳过它。
eval "$(pyenv init -)“应该在任何交互式shell的启动(包括嵌套shell)中运行,这样您就可以获得完成和方便的shell函数。
要确切地了解在引擎盖下发生了什么,请运行pyenv init或pyenv init路径。
如果您不想使用pyenv init和shims,您仍然可以从pyenv为您安装Python版本的能力中获益。只需运行pyenv,您将发现安装在$(pyenv )/versions中的版本,您可以根据需要手动执行该版本或符号链接。
https://stackoverflow.com/questions/68733068
复制相似问题