Table of Contents

安装多个版本的Python


Windows:

直接运行安装程序即可安装,指定安装路径,在系统PATH中最靠前的Python就是默认的Python,安装的时候也可以指定不把安装路径加到PATH当中,创建虚拟环境时自己指定希望的Python路径

Linux:

通过源码安装

以下步骤在Debain10上验证

更新源,安装依赖

sudo apt-get install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl

下载Python的代码,这里提供一个地址

curl -O https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz

解压源码

tar -xf Python-3.8.2.tar.xz

到源码目录,执行configure(编译前的检查,生成Makefile)

./configure –enable-optimizations

编译(-j参数指定的编译的核心数,nproc可以查询CPU核心数)

make (-j 32)

安装(主要要用altinstall,否则会覆盖原来的Python)

sudo make altinstall

运行

python3.8 --version

说明:

事实上Python的2或3解释器都是Python,在Ubuntu上默认情况下要用Python3的原因是,Python3是一个链接器,链接到了一个版本号为3.x的Python(可执行程序后面跟了版本号)。

在Windows上自己安装好之后,解释器就是Python,所以路径要标记好是哪一个版本的Python,不用去修改默认环境的Python,创建虚拟环境的时候按照路径指定我们需要的即可。

Python的基础工具(pip、pip2pi等),和Python保持一致,使用的是哪个Python,就是它对应的一套工具。默认环境中,Python是对应的Python2,所以要使用Python3命令,pip也要显式使用pip3。最好用类似python -m pip这样的命令,确保执行的是对应Python的包、工具。

通过APT安装

暂时未经验证(使用APT安装的方法可以参考一下Docker的笔记):

sudo apt update
apt-cache search python3.8 # 看看能不能找到 python3.8 这个包
#根据系统版本,支持的Py版本范围也不同,自己搜一下能找到哪些可用的Py版本
sudo apt install python3.8
python3.8 --version

sudo apt install python3.8-dev python3.8-venv # 顺便安装这两个

安装完成后,可能没有pip,参照Pip页面进行安装

Mac

在Python的官网直接找到对应版本的安装文件,比如:python-3.8.10-macos11.pkg,下载安装
安装好之后的位置在:/usr/local/bin
python3.8 -> ../../../Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8

或者这样找到安装位置(这里应该发现了,Mac和Linux的实际安装位置是不一样的,Mac在/usr/local/bin下的是一个link)

anny@annys-MacBook-Air lib % which python3
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3
anny@annys-MacBook-Air lib % which python3.11
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11
anny@annys-MacBook-Air lib % which python3.8 
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8

anny@annys-MacBook-Air lib % source ~/pyenv/py38/bin/activate
(py38) anny@annys-MacBook-Air lib % which python
/Users/anny/pyenv/py38/bin/python

同理可以找到Python的头文件安装在这里:/Library/Frameworks/Python.framework/Versions/3.8/include/python3.8
Python的这些头文件,在和C++绑定的时候可能会用到(在C++端)
另外使用命令[python -m sysconfig]可以查看系统配置(在venv内部就是python不是python3),这个应该是受venv控制的,可以查看各种安装路径之类的信息;或者这样使用sysconfig

import sysconfig
print(sysconfig.get_path("include"))

创建venv之后使用:

anny@annys-MacBook-Air bin % cd ~/Desktop 
anny@annys-MacBook-Air Desktop % /usr/local/bin/python3.8 --version
Python 3.8.10
anny@annys-MacBook-Air Desktop % /usr/local/bin/python3.8 -m pip install virtualenv
Collecting virtualenv
  Downloading virtualenv-20.27.1-py3-none-any.whl (3.1 MB)
     |████████████████████████████████| 3.1 MB 574 kB/s 
Collecting platformdirs<5,>=3.9.1
  Using cached platformdirs-4.3.6-py3-none-any.whl (18 kB)
Collecting distlib<1,>=0.3.7
  Downloading distlib-0.3.9-py2.py3-none-any.whl (468 kB)
     |████████████████████████████████| 468 kB 6.6 MB/s 
Collecting filelock<4,>=3.12.2
  Using cached filelock-3.16.1-py3-none-any.whl (16 kB)
Installing collected packages: platformdirs, filelock, distlib, virtualenv
  WARNING: The script virtualenv is installed in '/Library/Frameworks/Python.framework/Versions/3.8/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed distlib-0.3.9 filelock-3.16.1 platformdirs-4.3.6 virtualenv-20.27.1
WARNING: You are using pip version 21.1.1; however, version 24.3.1 is available.
You should consider upgrading via the '/usr/local/bin/python3.8 -m pip install --upgrade pip' command.
anny@annys-MacBook-Air Desktop % /usr/local/bin/python3.8 -m venv py38             
anny@annys-MacBook-Air Desktop % source ./py38/bin/activate
(py38) anny@annys-MacBook-Air Desktop % python --version
Python 3.8.10