which python
/home/tanvir/.pyenv/shims/python
which python3
/home/tanvir/.pyenv/shims/python3
我想python
指出/home/tanvir/.pyenv/shims/python3
,这样一旦我运行python path/to/script
它就会运行python3 path/to/script
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
答案1
我建议你不要这样做。Python 2 和 Python 3 之间存在一些不兼容性,长期以来,惯例是 Python 脚本顶部的 hashbang 选择 2 和#!/usr/bin/env python
3 #!/usr/bin/env python3
。前一个惯例正在开始消失,但你仍可能会遇到专门尝试选择 Python 2 的旧脚本,#!/usr/bin/env python
而运行 Python 3 的配置python
会破坏它们。
答案2
虽然您没有明确说明,但您已经设置并正在使用pyenv
。这是一个用编写的工具bash
,允许根据每个用户管理不同的python版本。
要更改你的默认python版本,你需要使用工具。目前你的python版本可能仍然设置为Ubuntu系统安装的python版本。
- 使用以下命令列出可用的 Python 版本
pyenv versions
- 然后使用以下命令更改默认的 Python 版本
pyenv global 3.6.8
3.6.8
根据您在第一步中找到的输出 进行调整。
除了为用户设置全局默认 Python 版本外,您还可以为不同的项目设置不同的默认 Python 版本。请自行了解有关该工具的更多信息pyenv
。
请注意,
which python
将继续指向/home/tanvir/.pyenv/shims/python
。这是因为pyenv
工作方式。该可执行文件是一个“垫片”,一个简短的 bash 脚本,它将您的python
命令转换为对配置的默认 python 版本的调用。如果步骤 1 没有显示除之外的任何 Python 版本
system
,则您需要使用 安装一些 Python 版本pyenv
。
对于不使用 的用户pyenv
,Ubuntu 提供了软件包来安装指向所需 Python 版本的符号链接,即python-is-python2
和python-is-python3
。在最新的 Ubuntu 版本中,python2
默认情况下不安装 ,只有后者软件包可用。
答案3
看起来好像你正在使用pyenv其设计目的是选择要使用的 Python 版本。该页面上的文档包含有关更改选择的说明。一种方法是运行:($ pyenv global 3.9.0
根据您安装的 Python 版本进行适当更改。pyenv versions
将向您展示)
/home/tanvir/.pyenv/shims/python
两者都不/home/tanvir/.pyenv/shims/python3
是真正的 Python 可执行文件,而是根据 pyenv 设置传递到已安装的 Python 版本之一的垫片。
目前尚不清楚您想在什么上下文中使用 python3 作为默认值:
- 为您作为用户提供全球范围的服务
- 在单个 shell 会话中
- 面向全球所有用户
- 对于单个项目
每种方法都有不同的方法和工具,例如,如果是单个项目,那么虚拟环境(pyenv-virtualenv) 可能是最好的工具。对于单个 shell 会话,运行$ alias python=python3
可能是最佳选择。
答案4
还有另一种方法开始受到欢迎,即使用#!/usr/bin/env python3
(或等效于 python2)。通过使用这种变体,它将首先选择路径中匹配的 python 版本,但这允许您拥有不同的虚拟环境,而无需对系统安装的 python 路径进行硬编码。
然后您只需运行path/to/script
它就会为您加载预期的 python 版本,而无需在命令行中指定它。