在 Ubuntu 18.04 上将 Python3 更新为新安装的版本

在 Ubuntu 18.04 上将 Python3 更新为新安装的版本

尝试了几种搜索策略,但找不到有效的答案。我刚刚将 Python-3.11.5 安装到我的“主”目录下的一个目录中。当我在终端中输入

me@mine:~/Python-3.11.5$ python3 --version
Python 3.6.9

我没有看到默认版本号的更新,尝试使用依赖于 Python v3.7 或更高版本的程序失败。但我还没有找到正确的参数来改变以识别新版本,尽管如果我直接通过次要版本调用它,它就会出现

me@mine:~/Python-3.11.5$ python3
Python 3.6.9 (default, Jun 29 2022, 11:45:57) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()

me@mine:~/Python-3.11.5$ python3.11
Python 3.11.5 (main, Aug 27 2023, 13:48:30) [GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

那么我怎样才能将默认值更改为python33.11?目前,我得到的结果如下whereis

whereis python3
python3: /usr/bin/python3.6 /usr/bin/python3.6m /usr/bin/python3 /usr/bin/python3.6-config /usr/bin/python3.6m-config /usr/lib/python3.6 /usr/lib/python3 /usr/lib/python3.7 /usr/lib/python3.8 /etc/python3.6 /etc/python3 /etc/python3.5 /usr/local/bin/python3.11 /usr/local/bin/python3.11-config /usr/local/lib/python3.6 /usr/local/lib/python3.11 /usr/include/python3.6 /usr/include/python3.6m /usr/share/python3 /usr/share/man/man1/python3.1.gz

所以系统可以“看到”/usr/local/bin/python3.11

编辑:因此,这是我发现的一种改变系统python3在终端会话中调用时将使用的位置的方法:

me@mine:~/Python-3.11.5$ alias python3=/usr/local/bin/python3.11

我认为效果并不局限于当前目录。但是,它不会改变外部程序尝试查找 python3+ 二进制文件的位置。因此,查看 PATH 时,我看到:

david@davids:~$ echo $PATH
/home/david/anaconda3/bin:/home/david/bin:/home/david/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

因此认为其中的物品/home/david/anaconda3/bin可能会被发现......

david@davids:~$ ls /home/david/anaconda3/bin
ls: cannot access '/home/david/anaconda3/bin': No such file or directory

仍然感到困惑。

答案1

当你在终端中输入时,python3shell 将尝试在变量指定的目录中查找具有该名称的二进制文件${PATH}。shell 将查找精确的名称。在你的情况下,第一个匹配项python3似乎是/usr/bin/python3,即系统 Python。要访问本地 Python,python3你需要添加一个优先的新符号链接(因为它在你的/usr/local/bin/之前):/usr/bin/${PATH}

sudo ln -s python3.11 /usr/local/bin/python3

您还可以更改系统符号链接并覆盖,/usr/bin/python3但这可能会在系统 Python 更新时恢复,并导致任何系统 (apt) 安装的 Python 库出现问题。我不会这么做,但如果你真的想这样做,你可以运行:

sudo ln -sf /usr/local/bin/python3.11 /usr/bin/python3

至于你的alias尝试。

我认为该效果并不局限于当前目录。

事实并非如此,但是别名不会传播到子进程,因此您的脚本将看不到它们。添加python3指向您想要${PATH}脚本使用的二进制文件的符号链接是将本地 Python 设置为默认 Python 的正确方法。

虚拟环境你也可以这样做:

python3.11 -m venv myvenv

然后在 shell 中运行,以将 venv Python 二进制文件视为(和和也是)的方式source myvenv/bin/activate进行设置。对于单个项目,virtualenvs 是隔离依赖项并始终使用一致版本的 Python 二进制文件的好方法。${PATH}pythonpython3python3.11

相关内容