Jav*_*low 10 python unix symlink apple-m1
因此,我在新的 MacBook M1 中设置默认变量,但由于某种原因,我的符号链接似乎不起作用。
为什么会出现以下行为?python从到 的符号链接python3不知何故丢失了。/Users/overflow/Documents/tools是我PATH变量的一部分。
$ type python
python is /Users/overflow/Documents/tools/python
$ python -V
Python 2.7.16
$ ls -lah /Users/overflow/Documents/tools/python
lrwxr-xr-x  1 overflow  staff    16B  6 Oct 18:48 /Users/overflow/Documents/tools/python -> /usr/bin/python3
$ /usr/bin/python3 -V
Python 3.8.9
$ echo $PATH | sed 's/:/\n/g'
/Users/overflow/Documents/tools
/Users/overflow/Documents/Dropbox/productivity/bin
/Users/overflow/Documents/tools/confluent-6.1.0/bin
/Users/overflow/.sdkman/candidates/java/current/bin
/Users/overflow/.nvm/versions/node/v16.10.0/bin
/Users/overflow/bin
/usr/local/bin
/opt/homebrew/bin
/opt/homebrew/sbin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
我可以为您提供一些常规故障排除技巧和可以替换符号链接的创可贴。
$(which python) -V
这应该会为您提供 python3 的版本。
其他值得检查的事情:
which python2
/usr/bin/python2例如,这应该指向某个标准位置。如果没有指出那里,可能值得理解原因。
一般来说,Mac 有一些怪癖。事实上,新的 MacBook M4 附带 Python2 作为默认值,您可能不应该尝试覆盖默认值,而且无论出于何种原因,它似乎不希望您这样做。
简单的答案:设置一个别名。
echo 'alias python="python3"' >> ~/.zshrc && source;
这对您有用,并且不会干扰任何潜在的其他系统。
更好的答案:
正如其他人所描述的,创建一个虚拟环境和source venv/bin/activate.
适用于 macOS 13(文图拉)
需要先安装 python3,然后为链接到 python3 的 python 设置别名。
echo 'alias python="python3"' >> ~/.zshrc && source ~/.zshrc;
小智 4
由于该路径未被使用,因此它被 shell 别名覆盖。这可以通过输入来确认set | grep python
如果您使用的是virtualenv:
尝试:/usr/bin/python3 -m venv python3.8.9
常见的 MacOS python 管理器有:
列出安装使用pythonz list
更改使用:/usr/bin/python3 -m venv python3.8.9
列出安装次数pythonbrew list
用于pythonbrew switch 3.8.9移动到新版本。
声称仅使用 $PATH。包含在内是为了完整性,但以防万一
列出安装次数pyenv versions
用于pyenv global 3.8.9移动到新版本。
~/.bashrc要删除其中任何一个,请从您的或文件中删除相应的行   ~/.zshrc。
您可以使用 定位该行grep ~/.bashrc python。