我有一些与Python路径相关的问题。我使用 homebrew 在我的 Mac 上安装 python3:
# homebrew python
> which -a python
python: aliased to /usr/local/bin/python3.9
# system python
❯ which -a python3
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
/usr/local/bin/python3
/usr/bin/python3
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
然后我使用命令
python -m venv venv
设置虚拟环境。激活后,我得到:
> which -a python
python: aliased to /usr/local/bin/python3.9
/Users/kshitijsachan/Documents/venv/bin/python
> which -a python3
/Users/kshitijsachan/Documents/venv/bin/python3
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
/usr/local/bin/python3
/usr/bin/python3
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
我的问题是:
which -a python
时,为什么 homebrew python 优先于 venv python?/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
在which -a python3
下列出两次?python
别名。您可能自己更改了 .bashrc
文件或其他内容。python: aliased to /usr/local/bin/python3.9
此行显示
python
是 /usr/local/bin/python3.9
的别名。 Python venv 仅更改 PATH
变量,而别名始终位于 PATH
之前,因此您将无法获得正确的 Python 版本。
要解决此问题,请使用命令
unalias python
在当前会话中取消绑定别名。另外,检查您的 .bashrc
文件(对于 MacOS zsh 终端为 .zsh_profile
),然后删除相应的行。应该是这样的
alias python='/usr/local/bin/python3.9'
但请注意,在执行
unalias
后,您应该使用 python3
(甚至特定版本的 python3.x
)而不是 python
。 python
命令可能默认引用Python2,具体取决于您的操作系统。
(.venv) $ which -a python3
.../test/.venv/bin/python3
/opt/homebrew/anaconda3/bin/python3
/Library/Frameworks/Python.framework/Versions/3.12/bin/python3
/Library/Frameworks/Python.framework/Versions/3.10/bin/python3
/opt/homebrew/bin/python3
/usr/local/bin/python3
/usr/bin/python3
venv
是创建虚拟环境的官方工具。python3 -m venv .venv # create virtual env in .venv/
source .venv/bin/activate # activate environment
上面的两个命令经常用于创建和激活虚拟环境。