当我们执行 sudo apt-get update python3 时会发生什么

问题描述 投票:0回答:6

我做到了:

sudo apt-get upgrade python3

然后:

python3 --version

但仍然显示:Python 3.5.2,我期待的是 Python 3.7.3,这是迄今为止的最新版本。

这里为什么以及发生了什么?

有人可以详细解释一下吗?

python python-3.x ubuntu
6个回答
4
投票

使用

sudo apt-get upgrade python3
更新 Python 3 不会自动更改符号链接。换句话说,如果你尝试:

which python3

响应将是:

/usr/bin/python3

如果你尝试:

ls -l /usr/bin/python3

响应将是:

lrwxrwxrwx 1 root root 9 Mar 23  2016 /usr/bin/python3 -> python3.5

这表明您的

python3
命令仍然指向您的
python3.5
安装。但为什么?理论上升级的话小版本应该会升级吧?

嗯,显然 apt 中的 Python 并非如此。当您升级

python3.5
时,您将升级 3.5 内的次要版本,但不会从 3.5 中移出。换句话说,您将拥有最新的 3.5 版本,但不是最新的 3 版本。

要安装,比如说,Python 3.10,您需要安装一个新版本,还要提到次要版本。事实证明,您还需要通过其 PPA key 导入特定于 apt 的存储库。 这个存储库称为“deadsnakes”

逐步说明如何操作

首先,更新和升级所有内容,安装

software-properties-common
包(用于处理PPA密钥),导入deadsnakes PPA存储库并再次更新apt索引:

sudo apt update && sudo apt upgrade -y
apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

其次,安装您选择的 Python 版本,并明确指定次要版本:

sudo apt install python3.10 python3.10-venv python3.10-dev

这不会自动更新符号链接。您需要使用以下两种方法之一来更新符号链接。第一个稍微好一点,使用

update-alternatives
。我将描述两者只是出于教育目的。

方法一:
update-alternatives

运行以下命令:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2

这会在

update-alternatives
中注册您的 Python 版本。要更改 Python 版本,请使用:

sudo update-alternatives --config python3

将显示带有选项的菜单。您可以选择您想要使用的版本。

方法二:手动更新符号链接

如果您选择不使用

update-alternatives
,您还需要执行:

sudo ln -sf /usr/bin/python3.10 /usr/bin/python3
sudo ln -sf /usr/bin/python3.10-config /usr/bin/python3-config

这应该足够了。如果您再次运行

python3
,您应该将其更新:

$ python3
Python 3.10.0a6 (default, Mar  2 2021, 02:01:08) [GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

2
投票

许多 Linux 发行版仍然将

/usr/bin/python
链接到
python2
,而不是
python3
。如果您只是想随意运行 Python 3,请在命令行中输入
python3
。当您通常使用
pip3
时,请使用
pip
为该解释器安装软件包。

建议做的是使用 sudo 权限来更新

python
符号链接。有太多系统脚本依赖于
/usr/bin/python
成为
python2
,因此这是一个好主意。

如果您想要对 Python 解释器进行更细粒度的控制,请使用 Anaconda 或 Miniconda 等平台管理器。与普通的 Ubuntu 软件包不同,您可以为本地用户安装它,因此不需要 root 访问权限来维护。您还可以首先将

PATH
变量指向 Anaconda 版本的
python
,而不影响系统的其余部分。以下是安装说明的示例:https://www.digitalocean.com/community/tutorials/how-to-install-anaconda-on-ubuntu-18-04-quickstart

要进行更多手动控制,请使用 virtualenvs。

换句话说,最简单的解决方案可能是在

python
中为
.bashrc
定义一个别名。


0
投票

您应该使用的命令是

python3
而不是
python

默认情况下,Ubuntu 采用

Python2
来表示
python
命令


0
投票

Python 3 与 Python 2 是不同的包。因此,python 2 无法升级到 python3。

sudo apt-get upgrade python3
它只升级python3包。默认情况下,
python
命令采用
python2
解释器。因此,要么在
alias python=python3
文件中创建
~/.bashrc
来使用 python 命令运行 python3。

或者,使用以下命令运行它:

python3

0
投票

这显示了操作系统中 python 的默认版本,而您升级了 python3。

python --version

要使用Python的升级版本,您应该在终端中输入Python并点击选项卡来检查可用版本

你会得到这样的结果

python
python              python2.7           python2-config      python2-pbr            python3.6           python3.6m          python3-config      python3m            python-config       
python2             python2.7-config    python2-jsonschema  python3             python3.6-config    python3.6m-config   python3-jsonschema  python3m-config     

然后使用所需版本的Python。


0
投票

安装python

我将列出2种安装python的方法:

来自您的默认存储库

如果您使用

apt list -a python3
,您可以查看 ubuntu/您的默认存储库提供的所有可用 python3 版本。

可以使用

apt update && sudo apt upgrade -y

进行更新

之后您可以使用

apt install python3.xx

安装新的可用 python3 版本

现在你必须看看你的Python二进制文件存储在哪里:

where python3.xx

来源

如果你因为担心破坏某些东西而无法使用升级命令:D你必须像这样从源代码安装python:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev # install dependencies
cd /tmp
wget https://www.python.org/ftp/python/3.8.4/Python-3.8.4.tgz # get your needed version
tar xvf Python-3.8.4.tgz # unpack
cd Python-3.8.4
./configure --enable-optimizations --with-ensurepip=install # prepare build
make -j 8 # build python (-j = split)
sudo make altinstall # install with altinstall to not overwrite the current installation
python3.8 --version
where python3.8

替换符号链接/更新 python3 命令

最后您必须将符号链接替换为新安装。首先删除当前符号链接:

sudo rm /usr/bin/python3
并将其替换为新符号链接(where 命令的结果):
sudo ln -s /usr/local/bin/python3.8 /usr/bin/python3

© www.soinside.com 2019 - 2024. All rights reserved.