【问题标题】:pyenv global does not seem to work with pyenv 2.0.4pyenv global 似乎不适用于 pyenv 2.0.4
【发布时间】:2021-08-10 20:22:01
【问题描述】:

pyenv global 似乎已停止使用新版本的 pyenv。

pyenv --version
pyenv 2.0.4-8-gd209e061
pyenv 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

shelllocal 命令似乎可以工作。

知道如何解决这个问题吗?

【问题讨论】:

    标签: python pyenv


    【解决方案1】:

    我亲眼目睹了导致此问题的几件事。

    第一个是我也安装了 Anaconda。我不得不在 Anaconda 之后移动 pyenv 配置块。这解决了这种情况下的问题。

    在第二种情况下,我发现了这个问题,让我想知道如何让它再次工作:

    https://github.com/pyenv/pyenv/issues/2026

    基本上我的配置文件中有这一行(在我的例子中是 .zshrc,因为我使用的是 ZSH):

    eval "$(pyenv init -)"
    

    然后我把它改成了这个,只添加了第一行,它解决了我的问题。

    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    

    这里的 pyenv README 的高级配置部分中有关于此的详细信息: https://github.com/pyenv/pyenv#advanced-configuration

    以下是该部分的副本:

    高级配置

    除非您必须知道 shell 配置文件中的每一行都在做什么,否则请跳过此部分。

    pyenv init 是唯一跨过将额外命令加载到 shell 中的命令。来自 RVM,你们中的一些人可能会反对这个想法。

    另请参阅环境变量部分,了解控制 Pyenv 行为的环境变量。

    eval "$(pyenv init --path)":
    

    设置您的垫片路径。这是 pyenv 正常运行的唯一要求。您可以通过在 $PATH 中添加 $(pyenv root)/shims 来手动执行此操作。 eval "$(pyenv init --path)" 应该在会话的登录 shell 启动脚本中运行 - 以便会话中的所有进程都可以访问 Pyenv 的功能并且它只运行一次,避免在嵌套 shell 中破坏 PATH (例如,从编辑器/IDE 启动的 shell)。

    在 Linux 中,GUI 管理器通常充当 sh 登录 shell,在启动时运行 /etc/profile 和 ~/.profile。 MacOS 的 GUI 不这样做,因此它的终端仿真器应用程序默认将其 shell 作为登录 shell 运行。

    eval "$(pyenv init -)":
    

    安装自动补全。这完全是可选的,但非常有用。采购 $(pyenv root)/completions/pyenv.bash 将设置它。 Zsh 用户还有一个 $(pyenv root)/completions/pyenv.zsh。

    重新散列垫片。有时您需要重建 shim 文件。在 init 上执行此操作可确保一切都是最新的。您始终可以手动运行 pyenv rehash。

    将 pyenv 作为 shell 函数安装到当前 shell 中。该位也是可选的,但允许 pyenv 和插件更改当前 shell 中的变量,从而使 pyenv shell 之类的命令成为可能。 sh 调度程序不会做任何疯狂的事情,比如覆盖 cd 或破解你的 shell 提示符,但如果由于某种原因你需要 pyenv 是一个真正的脚本而不是一个 shell 函数,你可以安全地跳过它。

    eval "$(pyenv init -)" 应该在任何交互式 shell 启动时运行(包括嵌套 shell),以便您获得完成和方便的 shell 函数。

    要自己了解幕后究竟发生了什么,请运行 pyenv init - 或 pyenv init --path。

    如果您不想使用 pyenv init 和 shims,您仍然可以从 pyenv 为您安装 Python 版本的能力中受益。只需运行 pyenv install ,您会发现 $(pyenv root)/versions 中安装了版本,您可以根据需要手动执行或符号链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2019-12-12
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多