【问题标题】:pyenv local/global not working on catalinapyenv local/global 在 catalina 上不起作用
【发布时间】:2020-02-28 15:58:15
【问题描述】:

我有一台全新的 MacBook,其中安装了我升级到 macOS Catalina 的所有内容。我安装了自制软件,然后安装了 pyenv,并使用 pyenv 安装了 Python 3.8.0。所有这些事情似乎都正常工作。

但是,pyenv localpyenv global 似乎都没有生效。以下是我所看到的所有细节:

thewizard@Special-MacBook-Pro ~ % pyenv versions
   system
 * 3.8.0 (set by /Usersthewizard/.python-version)
thewizard@Special-MacBook-Pro ~ % python --version
 Python 2.7.16
thewizard@Special-MacBook-Pro ~ % pyenv global 3.8.0
thewizard@Special-MacBook-Pro ~ % python --version
 Python 2.7.16
thewizard@Special-MacBook-Pro ~ % pyenv local 3.8.0
thewizard@Special-MacBook-Pro ~ % python --version
 Python 2.7.16
thewizard@Special-MacBook-Pro ~ % echo $PATH
 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/thewizard/.pyenv/bin
thewizard@Special-MacBook-Pro ~ % cat ~/.zshenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
   eval "$(pyenv init -)"
fi

顺便说一句,我的 .pyenv 中没有 /bin,我只是根据其他说明添加了这些命令,但我打算删除它,因为我认为它是错误的:

thewizard@Special-MacBook-Pro ~ % ls -al ~/.pyenv 
total 8
drwxr-xr-x   5 thewizard  staff  160 Nov  2 15:03 .
drwxr-xr-x+ 22 thewizard  staff  704 Nov  2 15:36 ..
drwxr-xr-x  22 thewizard  staff  704 Nov  2 15:03 shims
-rw-r--r--   1 thewizard  staff    6 Nov  2 15:36 version
drwxr-xr-x   3 thewizard  staff   96 Nov  2 15:01 versions

值得注意的是,Catalina 从 bash 迁移到 zsh,不确定这是否与此处相关。

【问题讨论】:

  • 查看您的$PATH 时,似乎系统目录/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 都优先于您的pyenv 目录。如果您的系统在 /usr/local/bin 中有 Python 2.7,那么在这种情况下运行 python 将使用 Python 2.7。可以用export PATH="/Users/thewizard/.pyenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"手动设置路径然后重试吗?
  • 我怀疑您在 .zshenv 之后获取了另一个 dotenv 文件,它会覆盖您的路径。你的.zshrc 会覆盖$PATH 吗?
  • @Pierre 是的,我可以做到这一点,你可能会做一些事情——但正如我提到的,我的 .pyenv 中没有 /bin,所以我认为这可能是徒劳的。我看到的唯一 bin 在 ~/.pyenv/versions/3.8.0/ 中,至于 .zshrc 该文件不存在。我的主目录中没有其他zsh 文件,实际上.zshenv 是我自己制作的文件。
  • 我不确定这是否符合 StackOverflow 的精神,但您是否愿意使用 official pyenv installer 而不是 Brew 重新安装 pyenv?不久前我写了一个tutorial,包含所有步骤。
  • 谢谢,我试试看!

标签: python macos homebrew pyenv


【解决方案1】:

如果您将pyenvpipenv 一起使用并遇到同样的问题,您可以将以下行添加到您的.zshrc.zprofile 文件中:

export PYENV_ROOT="$HOME/.pyenv/shims"
export PATH="$PYENV_ROOT:$PATH"
export PIPENV_PYTHON="$PYENV_ROOT/python"

引用pyenv/shims 文件夹有助于使其更通用,并允许您在安装多个 Python 版本时轻松切换。

pipenv 将始终引用当前由pyenv 设置为全局的 Python 版本。

【讨论】:

    【解决方案2】:

    我将以下内容添加到我的 ~/.zprofile 并使其正常工作。

    export PYENV_ROOT="$HOME/.pyenv/versions/3.7.3"
    export PATH="$PYENV_ROOT/bin:$PATH"
    

    【讨论】:

    • 在此之下...... $PYENV_ROOT/bin/virtualenvwrapper.sh 而不是 . ~/.pyenv/versions/3.7.3/bin/virtualenvwrapper.sh
    • 这对我有帮助,谢谢。它可以像这样更通用:stackoverflow.com/a/59909981/5717580
    【解决方案3】:

    检查您的帐户根目录中是否存在任何符号链接

    ls -al .pyenv/versions/x.x.x/bin
    

    如果您没有符号链接文件

    unset CLICOLOR
    unset CLICOLOR_FORCE
    unset LSCOLORS
    unalias ls
    

    然后尝试使用 pyenv 再次安装 python

    【讨论】:

      【解决方案4】:

      我认为问题是由于默认的 HD 分区可能导致混乱。 “使用 macOS Catalina,您不能再将文件或数据存储在只读系统卷中,也不能从命令行写入“根”目录 (/),例如使用终端”(https://support.apple.com/en-ca/HT210650)。我在 macbook pro 和 imac 上遇到了同样的问题,这迫使我执行恢复出厂设置。我已经放弃了 pyenv,决定用 Anaconda 来管理 python 版本。

      【讨论】:

        【解决方案5】:

        catalina(和一般的 OS X)使用 /etc/zprofile 来设置 $PATH 提前于您在本地点文件中指定的内容。

        它使用path_helper 实用程序来指定$PATH,我怀疑这会覆盖本地点文件中的填充程序注入。您可以在/etc/zprofile 中注释掉以下行。这将在后续的操作系统更新中被覆盖。

        # if [ -x /usr/libexec/path_helper ]; then
        #   eval `/usr/libexec/path_helper -s`
        # fi
        

        或者,您可以在您的个人.zshenv 文件中取消设置GLOBAL_RCS 选项(添加unsetopt GLOBAL_RCS),这将允许您禁止为zsh 采购所有系统默认RC 文件并允许pyenv垫片按预期运行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-12
          • 1970-01-01
          • 2022-06-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多