roe*_*and 23 python command-line bash
我用apt-get安装了python2.7和pyhton3.5。
在我的 .bashrc 中,我必须alias python=python3
将 python3 设为默认值。如果我直接运行 python,这有效,但它似乎不适用于 /usr/bin/env。
在这种情况下如何强制使用 python3?
$ python --version
Python 3.5.2
$ /usr/bin/env python --version
Python 2.7.12
Run Code Online (Sandbox Code Playgroud)
hee*_*ayl 19
那是因为env
是python
在您的中搜索PATH
,而不是在任何 shell 内置、别名或函数中搜索。正如您定义python
为python3
别名一样,env
不会找到它,它将搜索PATH
并解析python
为/usr/bin/python
(即python2
)。
您可以检查可执行文件的所有可用位置python
,在bash
,请执行以下操作:
type -a python
Run Code Online (Sandbox Code Playgroud)
如果您想按照定义在 shebang 中使用别名,那您env
就不走运了,shebang 需要是解释器可执行文件的完整路径python
,当您使用/usr/bin/env python
. 要python3
使用 shebang解释脚本:
#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)
deW*_*ker 11
到了 2020 年,事情发生了变化:
默认Python3
在 20.04 LTS 中,基础系统中包含的 python 是 Python 3.8。Python 2.7 已移至 Universe,默认情况下不包含在任何新安装中。
Ubuntu 中需要 Python 2.7 的其余软件包已更新为使用 /usr/bin/python2 作为解释器,并且 /usr/bin/python 在任何新安装中默认不存在。等等,等等
不幸的是,据我所知,Ubuntu 20.04LTS 发行版中的这一更改可能没有得到应有的效果。某些应用程序显然不支持此更改,并且如果没有一些帮助就无法工作。
如果您需要Python2,除了安装它并忍受混乱之外,您别无选择。如果您不需要它,至少有两个系统范围的解决方案可以让您的生活更轻松:
python-is-python3
:$ sudo apt-get install python-is-python3
Run Code Online (Sandbox Code Playgroud)
update-alternatives
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
update-alternatives: using /usr/bin/python3 to provide /usr/bin/python (python) in auto mode
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67390 次 |
最近记录: |