我正在运行Mountain Lion,而基本的默认Python版本是2.7。我下载了Python 3.3,并希望将其设置为默认值。
目前:
$ python
version 2.7.5
$ python3.3
version 3.3
如何设置它,以便每次运行$ python
时都能打开3.3?
pyenv
。
我正在运行Mountain Lion,而基本的默认Python版本是2.7。我下载了Python 3.3,并希望将其设置为默认值。
目前:
$ python
version 2.7.5
$ python3.3
version 3.3
如何设置它,以便每次运行$ python
时都能打开3.3?
pyenv
。
Answers:
在系统范围内更改默认python可执行文件的版本可能会破坏某些依赖python2的应用程序。
但是,您可以在大多数外壳程序中为命令加上别名,因为macOS中的默认外壳程序(10.14及以下版本中的bash; 10.15中的zsh)具有相似的语法。您可以在您的中放置别名python ='python3' ~/.profile
,然后~/.profile
在您~/.bash_profile
和/或您的源代码中~/.zsh_profile
输入以下内容:
[ -e ~/.profile ] && . ~/.profile
这样,您的别名将可在所有shell中使用。
这样,python
命令现在将被调用python3
。如果您想偶尔调用“原始” python(指python2),则可以使用command python
,这将使别名保持不变,并且适用于所有shell。
如果您更频繁地启动解释器(我愿意),则总是可以创建更多别名来添加,即:
alias 2='python2'
alias 3='python3'
提示:对于脚本,而不是使用shebang之类的方法:
#!/usr/bin/env python
采用:
#!/usr/bin/env python3
这样,系统将使用python3运行python 可执行文件。
alias python=python3
然后运行python
对我来说不起作用。尝试将其保存为〜/ .bash_aliases和〜/ .bash_profile。
source ~/.bash_profile
在编辑~/.bash_profile
文件后运行。
alias pip='pip3.6'
您可以通过符号链接来解决。
unlink /usr/local/bin/python
ln -s /usr/local/bin/python3.3 /usr/local/bin/python
unlink
而不是rm
删除符号链接(如果您不小心在其上添加了斜杠,rm
可能会导致一些不良结果)。或者,您可以执行ln -s -f ...
此操作以覆盖当前符号链接。
python
是python2.7
?
unlink: /usr/bin/python: Operation not permitted
ln -s...
使用 /local/
)。
打开〜/ .bash_profile文件。
vi ~/.bash_profile
然后按如下所示放置别名:
alias python='python3'
现在保存文件,然后运行〜/ .bash_profile文件。
source ~/.bash_profile
恭喜!!!现在,您可以通过键入python使用python3 。
python --version
的Python 3.7.3
source ~/.bash_profile
每次重新打开终端时,我真的需要吗?一旦我关闭并再次打开终端,它将恢复为python2。
以下为我工作
cd /usr/local/bin
mv python python.old
ln -s python3 python
我在这个游戏上有点晚了,但是我认为我应该发布更新的答案,因为我自己才遇到这个问题。请注意,这仅适用于基于Mac的设置(我没有在Windows或任何版本的Linux上尝试过)。
最简单的方法是通过Brew安装Python 。如果您未安装brew,则需要先执行该操作。安装完成后,在终端上执行以下操作:
brew install python
这将安装Python3。安装后,运行以下命令:
ls -l /usr/local/bin/python*
您将看到brew创建的所有安装到其Python安装的链接。它看起来像这样:
lrwxr-xr-x 1 username admin 36 Oct 1 13:35 /usr/local/bin/python3@ -> ../Cellar/python/3.7.4_1/bin/python3
lrwxr-xr-x 1 username admin 43 Oct 1 13:35 /usr/local/bin/python3-config@ -> ../Cellar/python/3.7.4_1/bin/python3-config
lrwxr-xr-x 1 username admin 38 Oct 1 13:35 /usr/local/bin/python3.7@ -> ../Cellar/python/3.7.4_1/bin/python3.7
lrwxr-xr-x 1 username admin 45 Oct 1 13:35 /usr/local/bin/python3.7-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7-config
lrwxr-xr-x 1 username admin 39 Oct 1 13:35 /usr/local/bin/python3.7m@ -> ../Cellar/python/3.7.4_1/bin/python3.7m
lrwxr-xr-x 1 username admin 46 Oct 1 13:35 /usr/local/bin/python3.7m-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7m-config
此示例的第一行显示了python3
符号链接。要将其设置为默认python
符号链接,请运行以下命令:
ln -s -f /usr/local/bin/python3 /usr/local/bin/python
设置后,您可以执行以下操作:
which python
它应该显示:
/usr/local/bin/python
您将必须重新加载当前的终端shell,才能在该shell中使用新的符号链接,但是,所有新打开的shell会话将(应该)自动使用它。要对此进行测试,请打开一个新的终端外壳并运行以下命令:
python --version
转到“应用程序”,进入“ Python”文件夹,应该有一个名为“ Update Shell Profile.command”或类似名称的bash脚本。运行该脚本,它应该这样做。
更新:看来您不应该更新它:如何更改默认python版本?
在本文中,作者讨论了设置默认python的三种方法:
所有这些方式都有效。您决定哪个更好。
如果virtualenvwrapper
使用which virtualenvwrapper.sh
,则可以使用进行定位,然后使用vim
或任何其他编辑器将其打开,然后更改以下内容
# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi
将行更改VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
为VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"
。
如果您使用macports,则不需要使用别名或环境变量,只需使用macports已经提供的方法,此问答将对此进行说明:
TL; DR:
sudo port select --set python python27
好吧...有点老了。但是仍然值得一个好的答案。
优点之一是您不想触摸Mac上的默认Python。
通过Homebrew或其他方式安装所需的任何Python版本,然后在virtualenv中使用它。Virtualenv通常被认为是胡扯,但还是比在系统范围内更改python版本(macOS可能会保护自己免受此类操作)或用户范围,bash范围……好得多。只需忘记默认的Python。使用venv这样的游乐场是您的操作系统最感谢的事情。
例如,这种情况是,许多现代Linux发行版都摆脱了现成安装的Python2的安装,仅在系统中保留了Python3。但是每次您尝试使用python2作为依赖项安装旧版本时...希望您理解我的意思。一个好的开发者不在乎。好的开发人员可以使用他们想要的python版本创建干净的游乐场。