【Linux】如何在ubuntu下安装任意版本python

一、现有的几种安装方式优缺点分析

最近在编译一个工程的时候遇到问题,看到报错信息指向的是一个py文件,第一反应就是python版本问题,网上一搜果然是需要把版本从3.5升级到3.7。

网上关于安装python的文章有很多,基本方法分为两种

1. 方法一添加新的源

添加新的源,然后用标准的apt install的方式安装
这种方法的问题是因为年代久远,很多文章里面提供的源已经失效了。而且也只能安装特定的几种版本,做不到任意版本选择。

参考的链接如下
https://blog.youkuaiyun.com/u013578795/article/details/105460386
https://blog.youkuaiyun.com/qq_40965177/article/details/83500817

2. 方法二下载源码编译

下载源码编译,然后删除原来的python,把新的python链接上去。
这个方法的缺点是不同的项目需要不同版本的python,删掉旧版本会导致别的项目出问题。

参考的链接如下
https://blog.youkuaiyun.com/qq_44696031/article/details/124564768
https://blog.youkuaiyun.com/MenciusHometown/article/details/77688728

二、解决方式

还是采用源码方式编译安装新的python,然后利用update-alternatives来切换自己需要的版本

1. 源码方式编译python

1.1 安装编译需要的包

sudo apt -y install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip dosfstools e2fsprogs parted htop tree openssl  perl tofrodos iproute2 gawk  git  xvfb net-tools tftpd flex bison libselinux1 screen pax gnupg diffstat chrpath socat xterm autoconf libtool texinfo gcc-multilib build-essential zlib1g-dev libsdl1.2-dev libglib2.0-dev zlib1g-dev zlib1g-dev:i386 libssl-dev libncurses5-dev    make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev

sudo apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev

1.2 下载python源代码

打开python官网 https://www.python.org/ftp/python/
找到自己需要的版本
在这里插入图片描述
这里以python-3.7.1rc2为例

下载源码,并解压。注意文件名要区分大小写

wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz
tar xvf Python-3.7.1rc2.tgz

1.3 配置并编译

配置安装路径。注意这里指定的/usr/local/python3.7,后面会用到这个路径

cd Python-3.7.1rc2
./configure --prefix=/usr/local/python3.7 --enable-optimizations --with-ensurepip=install
make

1.4 安装

sudo make install

2. 用update-alternatives切换python版本

2.1 列出所有可用的版本

2.1.1 update-alternatives --list python
leo@xlx:~$ update-alternatives --list python 
update-alternatives: error: no alternatives for python
2.1.2 解决no alternatives for python错误

第一次运行上面的命令可能会报错update-alternatives: error: no alternatives for python
这个错误信息表示 python 的替代版本还没被update-alternatives识别

要解决这个问题,我们先找到所有的python版本

leo@xlx:~$ ll /usr/bin/python*
lrwxrwxrwx 1 root root       9 83 15:11 /usr/bin/python -> python2.7*
lrwxrwxrwx 1 root root       9 83 15:11 /usr/bin/python2 -> python2.7*
-rwxr-xr-x 1 root root 3488528 722  2020 /usr/bin/python2.7*
lrwxrwxrwx 1 root root       9 83 15:11 /usr/bin/python3 -> python3.5*
-rwxr-xr-x 1 root root 4456208 720  2020 /usr/bin/python3.5*
-rwxr-xr-x 1 root root 4456208 720  2020 /usr/bin/python3.5m*
lrwxrwxrwx 1 root root      10 83 15:11 /usr/bin/python3m -> python3.5m*

如上图所示,现有的两个版本分别为/usr/bin/python2.7和/usr/bin/python3.5
添加这两个版本

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1  
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2 

还需要添加我们自己编译的版本,前面设置的安装路径是/usr/local/python3.7,
因此完整的文件路径为/usr/local/python3.7/bin/python3.7

sudo update-alternatives --install /usr/bin/python python /usr/local/python3.7/bin/python3.7 3
2.1.3 再次列出可用的 Python 版本
leo@xlx:~$ update-alternatives --list python 
/usr/bin/python2.7
/usr/bin/python3.5

2.2 切换Python 版本

运行sudo update-alternatives --config python,然后输入对应的序号,比如3,切换到3.7

leo@xlx:~$ sudo update-alternatives --config python 
There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                                Priority   Status
------------------------------------------------------------
  0            /usr/local/python3.7/bin/python3.7   3         auto mode
* 1            /usr/bin/python2.7                   1         manual mode
  2            /usr/bin/python3.5                   2         manual mode
  3            /usr/local/python3.7/bin/python3.7   3         manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/local/python3.7/bin/python3.7 to provide /usr/bin/python (python) in manual mode

3.查看当前版本

运行python --version或者直接运行python查看版本信息
已经切换到3.7

leo@xlx:~$ python
Python 3.7.1rc2 (default, Aug  3 2022, 21:42:46) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
leo@xlx:~$ python --version
Python 3.7.1rc2
<think>好的,我现在需要解决用户的问题:如何在Linux上完全卸载Anaconda并重新安装特定版本Python。首先,我得仔细理解用户的需求。用户想要彻底卸载现有的conda环境,然后安装指定版本Python。根据用户提供的引用内容,特别是引用[3]提到了卸载Anaconda的步骤,这可能是一个关键点。 首先,我应该回顾如何正确卸载Anaconda。根据引用[3],卸载Anaconda需要删除整个安装目录和相关配置文件。用户可能已经安装了Anaconda,但可能不清楚具体的卸载步骤。需要指导用户执行卸载命令,比如使用Anaconda自带的卸载脚本,或者手动删除相关文件和目录。 接下来,用户需要安装特定版本Python。这里有两种可能性:一种是直接安装特定版本Python,另一种是通过Anaconda来管理。根据引用[5],Anaconda是一个包含Python和多个科学包的发行版,而Miniconda则更轻量。如果用户希望使用conda环境管理工具,可能需要安装Miniconda或Anaconda,并在其中创建指定Python版本的环境。或者,用户可能希望完全卸载Anaconda后,使用系统包管理器或其他方式安装Python。 用户的问题中提到了“完全卸载Anaconda并重新安装特定版本Python”,所以可能需要分两部分处理:卸载和安装。同时,根据引用[2],Linux和Windows下conda命令一致,但用户现在是在Linux环境下操作,需要注意路径和权限问题。 在卸载步骤中,需要确认Anaconda的安装路径,通常是在用户的主目录下的anaconda3文件夹。此外,还需要检查.bashrc或.zshrc等配置文件中的PATH变量,移除与conda相关的部分,以防止残留的环境变量影响后续安装安装特定版本Python,可以通过多种方式实现。如果用户仍然希望使用conda的环境管理功能,可以在卸载Anaconda后安装Miniconda,然后用conda创建指定Python版本的环境。或者,用户可能希望直接安装系统级的Python版本,这需要用到如pyenv之类的版本管理工具,或者通过源码编译安装。 根据引用[5],Miniconda是更轻量的选择,只包含conda和Python。所以建议用户安装Miniconda,然后使用conda创建指定Python版本的环境。这样既能保持环境隔离,又不会占用太多空间。但用户的问题中可能希望完全移除Anaconda,所以需要明确是否需要继续使用conda,还是改用其他方法。 现在需要整理步骤: 1. 卸载Anaconda: - 删除安装目录,通常是~/anaconda3或~/miniconda3。 - 清理配置文件,如.bashrc、.bash_profile、.zshrc中的conda初始化脚本。 - 可能还需要删除隐藏文件,如.condarc、.continuum等。 2. 安装特定版本Python: a. 使用Miniconda安装,然后用conda创建环境。 b. 使用系统包管理器安装指定版本(如apt-get安装python3.8)。 c. 使用pyenv管理多版本Python。 用户的问题提到“重新安装特定版本Python”,但没有说明是否继续使用conda。可能需要询问用户是否有使用conda的意向,但根据用户提供的引用,尤其是引用[2]和[5],用户可能希望继续使用conda的环境管理功能。因此,在卸载Anaconda后,安装Miniconda,并通过conda安装指定版本Python可能更合适。 此外,引用[1]提到了Anaconda的安装步骤,可以参考类似的步骤安装Miniconda。引用[5]提到Miniconda只包含基本内容,适合需要节省空间的用户。 因此,步骤可能是: 1. 卸载Anaconda: - 执行Anaconda自带的卸载脚本(如果存在)或手动删除安装目录。 - 清理shell配置文件中的conda初始化代码。 2. 安装Miniconda: - 下载Miniconda安装脚本。 - 运行脚本安装。 - 初始化conda。 3. 创建指定Python版本的环境: - 使用conda create命令指定Python版本。 - 激活环境。 但用户可能不需要Miniconda,而是直接安装Python。这时需要分情况讨论。例如,如果用户想通过系统包管理器安装,可以用sudo apt-get install python3.x,但不同Linux发行版的包管理可能不同。或者,用户可能需要从源代码编译安装特定版本。 但根据用户提供的引用,他们可能更熟悉conda,所以建议继续使用conda管理环境。例如,即使卸载了Anaconda,安装Miniconda后,可以使用conda安装任意Python版本。 现在需要确保步骤正确: 卸载Anaconda: 1. 删除安装目录:rm -rf ~/anaconda3 2. 编辑.bashrc等文件,删除conda初始化部分。 3. 可能还需要检查其他配置文件如.profile、.bash_profile等。 安装Miniconda: 1. 下载Miniconda安装脚本:wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 2. 运行脚本:bash Miniconda3-latest-Linux-x86_64.sh 3. 按照提示安装,注意不要自动初始化conda,或者在安装后手动初始化。 创建环境: conda create -n myenv python=3.8 conda activate myenv 但用户可能希望系统全局安装特定Python版本,这时候可能需要使用其他方法。不过,使用conda环境更安全,不影响系统Python。 综上,回答应该分步骤,先彻底卸载Anaconda,再选择安装Miniconda并创建指定Python版本的环境。同时,确保用户清理所有相关文件和配置,避免残留问题。</think>### 彻底卸载Anaconda并安装指定版本Python的步骤 #### 1. 完全卸载Anaconda **步骤说明**: - **删除Anaconda安装目录**: ```bash rm -rf ~/anaconda3 # 默认安装路径,若自定义过路径需替换为实际目录 ``` 如果安装时未修改路径,默认目录为`~/anaconda3`或`~/miniconda3`[^3][^5]。 - **清理配置文件**: - 打开`~/.bashrc`、`~/.bash_profile`、`~/.zshrc`等Shell配置文件,删除与conda相关的初始化代码(通常以`# >>> conda initialize >>>`开头的段落)。 - 删除隐藏的conda配置文件: ```bash rm -rf ~/.condarc ~/.conda ~/.continuum ``` #### 2. 安装指定版本Python **方案一:通过Miniconda管理环境(推荐)** - **安装Miniconda**: ```bash # 下载最新版Miniconda安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 执行安装(按提示操作,建议安装到默认路径) bash Miniconda3-latest-Linux-x86_64.sh ``` 安装完成后重启终端或运行`source ~/.bashrc`以加载conda命令[^1][^5]。 - **创建指定Python版本的环境**: ```bash # 创建一个名为py38的环境,Python版本设为3.8 conda create -n py38 python=3.8 # 激活环境 conda activate py38 ``` 此后在该环境中,所有操作均使用Python 3.8[^2]。 **方案二:直接安装系统级Python** - **使用APT(适用于Debian/Ubuntu)**: ```bash sudo apt update sudo apt install python3.8 # 替换为所需版本 ``` - **从源码编译安装**(适合需要完全自定义的情况): ```bash wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz tar xvf Python-3.8.12.tgz cd Python-3.8.12 ./configure --prefix=/usr/local/python3.8 make sudo make install # 添加环境变量 echo 'export PATH="/usr/local/python3.8/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` #### 验证安装 ```bash python --version # 确认版本是否符合预期 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值