尝试了几种搜索策略,但找不到有效的答案。我刚刚将 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.
>>>
那么我怎样才能将默认值更改为python3
3.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
当你在终端中输入时,python3
shell 将尝试在变量指定的目录中查找具有该名称的二进制文件${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}
python
python3
python3.11