编辑PATH变量内容

编辑PATH变量内容

python3当我在 zsh 终端上输入时,Python 3.9 就会启动:

Python 3.9.0 (v3.9.0:9cf6752276, Oct  5 2020, 11:29:23) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

由于which python3输出是:

/Library/Frameworks/Python.framework/Versions/3.9/bin/python3

这意味着python3可执行文件位于那里。

我想在使用终端时从 Python 3.9 切换到 Python 3.11。我已经安装了Python 3.11,它位于:

/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11

这是echo $PATH输出:

/Users/alex/Library/Android/sdk/platform-tools
/Users/alex/Library/Android/sdk/tools
/Library/Frameworks/Python.framework/Versions/3.9/bin
/opt/homebrew/bin
/opt/homebrew/sbin
/Library/Frameworks/Python.framework/Versions/3.11/bin
/Library/Frameworks/Python.framework/Versions/3.10/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Library/TeX/texbin
/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin
/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin
/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin

为了在我的终端上输入python3(或者实际上)时启动 Python 3.11 而不是 Python 3.9,我想我应该python

  • 在变量 Python 3.11 可执行文件的顶部插入PATH,即export PATH=/Library/Frameworks/Python.framework/Versions/3.11/bin:$PATH.这实际上是有效的,因为echo $PATH现在打印/Library/Frameworks/Python.framework/Versions/3.11/bin在变量之上PATH;或者

  • 编辑变量,在离开时PATH删除/Library/Frameworks/Python.framework/Versions/3.9/bin和。/Library/Frameworks/Python.framework/Versions/3.10/bin/Library/Frameworks/Python.framework/Versions/3.11/bin

请注意cat ~/.zshrc打印:

# python aliases
alias python="python3"
alias pip="pip3"

# adb
export PATH=~/Library/Android/sdk/tools:$PATH
export PATH=~/Library/Android/sdk/platform-tools:$PATH

# English
export LC_ALL=en_US.UTF-8

我应该怎么办?我应该编辑~/.zshrc文件并追加export PATH=/Library/Frameworks/Python.framework/Versions/3.11/bin:$PATH,还是应该从变量中删除3.9和删除,或者任何其他解决方案?3.10PATH

答案1

在 中zsh$path数组与变量相关联$PATH

您可以通过执行以下操作来确保元素是唯一的typeset -U path

然后您可以使用以下命令插入或移动目录到前面:

path[1,0]=( /that/dir )

要删除与模式匹配的条目,您可以执行以下操作:

path=( ${path:#pattern} )

所以在这里,结合在一起,可能是:

typeset -U path 
path=( ${path:#/Library/Frameworks/Python.framework/Versions/3.<0-10>/bin} )
path[1,0]=( /Library/Frameworks/Python.framework/Versions/3.11/bin )

请注意,如果您更新$PATH,这将影响使用以下内容编写的脚本:

#! /usr/bin/env python3

shebangs,但如果脚本需要特定版本的 python,它们可能会有一个

#! /usr/bin/env python3.9

she-bang,或者使用多种方法之一来解决 python 版本控制带来的混乱。

答案2

由于已经设置了别名。你尝试过寻找它的来源吗?

source ~/.zshrc

如果做不到这一点,第二种方法可能是在 Python 3.9 上设置一个指向 Python 3.11 的符号链接

相关内容