我想在我的 PC Thinkpad X230 Ubuntu 20.04 上将 Python 3.8 设置为默认设置
我尝试设置别名
gt@gt-ThinkPad-X230:~$ alias python='usr/bin/python3.8'
问:这会改变 .bashrc 文件吗?如果会,是哪个?~/.bashrc?另一个?如果会,是哪个?
gt@gt-ThinkPad-X230:~$ python --version
bash: usr/bin/python3.8: No such file or directory
抱怨找不到 /usr/bin/python3.8,但是:
gt@gt-ThinkPad-X230:~$ ls /usr/bin/python*
/usr/bin/python /usr/bin/python3.8 /usr/bin/python3-pasteurize
/usr/bin/python2 /usr/bin/python3.8-config /usr/bin/python3-unidiff
/usr/bin/python2.7 /usr/bin/python3-config
/usr/bin/python3 /usr/bin/python3-futurize
我如何让 bash 找到 /usr/bin/python3.8?
答案1
正确的方法是sudo apt install python-is-python3
- 它有效地建立了一个符号链接,但它也与未来的更新保持同步;所以如果你的 ubuntu 发行版移动到 Python 3.9,手动符号链接将不再起作用,但包确保它仍然有效。
答案2
首先回答你的问题,你的方法应该有效,我认为你在别名中给出的路径需要/
前面的路径,所以命令应该是:
alias python='/usr/bin/python3.8'
~/.bashrc
假设您正在使用 bash,这确实需要进入您的文件。
其次,Ubuntu 有一个非常好的方法来全局设置默认二进制文件,而不是像这里描述的那样弄乱点配置文件:更新替代方案,因此更好的解决方案可能是简单地运行:
sudo update-alternatives --set python /usr/bin/python3.8
这将确保您在任何地方都可以使用您想要的 Python 版本。
答案3
检查已安装的 Python 版本:
ls /usr/bin/python*
然后,创建替代方案:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2
然后,选择您想要的版本:
sudo update-alternatives --config python
您可以轻松地在默认 Python 版本之间切换。
答案4
以下是我希望区分使用python-is-python3和更新替代方案不同答案中描述的选项。起初,我认为使用这两个选项都可以得到最佳解决方案,但经过短暂的测试后,我意识到我遇到了问题。
我在用Ubuntu 20.04.6 LTS(焦点窝),在 Windows 10 上的 Windows Subsystem for Linux(WSL)下运行。
我的第一个观察是,我没有python2根本没有安装;我确实有python3.8,作为此发行版的默认“系统” Python 3 包提供。我注意到该python
命令不起作用:
$ python --version
Command 'python' not found, did you mean:
command 'python3' from deb python3
command 'python' from deb python-is-python3
我通过安装解决了这个问题python-is-python3,它将在中创建符号链接/usr/bin/
:
$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root 7 Apr 15 2020 /usr/bin/python -> python3
lrwxrwxrwx 1 root root 9 Mar 13 2020 /usr/bin/python3 -> python3.8
这可能就足够了,但是我已经安装了多个版本的 Python 3......原因。我希望能够在 Python 3 的不同版本之间进行选择,因此更新替代方案包很有用:
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 8
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 10
这样做的效果是(1)python3.10
在我的系统中使其成为默认版本,因为它具有最高优先级 - 末尾的数字 - 并且(2)允许我通过以下方式切换系统范围的 python 版本:
$ sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.10 10 auto mode
1 /usr/bin/python3.10 10 manual mode
2 /usr/bin/python3.8 8 manual mode
请注意,这是使用 python3作为命令/别名。
注意:我不建议使用更新替代方案经常在项目的不同默认 Python 3.x 版本之间切换。最好在每个项目中使用虚拟环境,使用显式版本的 Python 安装,例如
$ python3.8 -m venv .venv
更新
自从使用上面描述的方法后,我发现了一个问题:当尝试使用等升级我的 disto 时apt-get update
,我发现了如下问题这:ModuleNotFoundError:没有名为“apt_pkg”的模块。
原因是我将的默认版本更改为python3
,python3.10
这与 Ubuntu 20.04 中的许多系统脚本不兼容,这是意料之中的python3.8
。
因此我有恢复我的默认设置将python3.8
明确用于python3.10
为我的项目创建 venvs。