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.10
PATH
答案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 的符号链接