源码安装Python2.7.18 。是目前2020年后发布的新Linux发行版的唯一途径。并且安装好了之后只能运行基本的python2功能。不能作为共享库使用,即 ./configure --enable-shared 会导致编译通不过。也不能优化,即 ./configure --enable-optimizations 会导致编译通不过。下面我们开始安装。
- 安装依赖(网上搜python2源码依赖吧,假设你已经安装好了依赖)
- 下载并解压原文件
> wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz > mkdir python2.7 > tar -xzf Python-2.7.18.tgz -C python2.7
- 进入源码目录
> cd python2.7 > mv Python-2.7.18/* .
- 进入源码目录后执行配置并生成 Makefile 文件
# 安装到 /usr/local/share/python2.7/bin/python 作为 python2 的文件 > ./configure --prefix=/usr/local/share/python2.7 # 不要增加其他参数,否则会编译通不过。
- 保证Make使用的是bash语法。直接将 Makefile 文件中 /bin/sh 改成 /bin/bash
- 编译和安装python2
> make > sudo make install > /usr/local/share/python2.7/bin/python2 -V# 如果能看到python版本,说明就安装成功了。如 Python 2.7.18 # python2 加入到Path环境 > sudo ln -s /usr/local/share/python2.7/bin/python2 /usr/bin/python2
- 安装pip2。pip2 也只能使用官方脚本 get-pip.py 安装。记得把脚本第一行的 python 改成 python2,因为上一步,我们只创建了 python2 的连接,没有创建 python 的连接。主要考虑到,你的机器上可能已经存在了 python 连接,并指向了 python3
# 下载脚本源文件 > wget https://bootstrap.pypa.io/pip/2.7/get-pip.py # 修改 get-pip.py 第一行内容,把 python 改成 python2 # 给脚本添加可执行权限 > chmod 755 get-pip.py # 执行安装pip脚本,默认安装目录就是 python2 所在目录即 /usr/local/share/python2.7/bin > ./get-pip.py # /usr/local/share/python2.7/bin 目录下面应该有了pip 和 pip2 两个文件 > /usr/local/share/python2.7/bin/pip2 -V # 如果能看到pip版本信息,说明安装成功了。如 pip 20.3.4 from /usr/local/lib/python2.7/site-packages/pip (python 2.7) # 如果这里报错,可能pip被安装到了其他位置。我们可以用 where pip2 > whereis pip2 pip2: /home/yourname/.local/bin/pip2 > pip2_path="$(whereis pip2 | awk '{print $2}')" > $pip2_path -V # 如果能看到pip版本信息,也能说明安装成功了。如 pip 20.3.4 from home/yourname/.local/lib/python2.7/site-packages/pip (python 2.7) 如果是这种情况,你就不用把 pip2 加入 Path 环境了,也就是说下一条命令可以不用执行了。因为 $HOME/.local/bin 默认已经在 Path 中了 # 看情况。是否执行,把 pip2 加入到 Path 环境 > sudo ln -s /usr/local/share/python2.7/bin/pip2 /usr/bin/pip2
- 安装 pipenv。千万不要覆盖了 python3 的 pipenv,因此要指定安装路径,如 $HOME/.local/share/python2
> pip2 install --target=$HOME/.local/share/python2 pipenv > $HOME/.local/share/python2/bin/pipenv --version # 如果能看到pipenv版本信息,说明安装成功了。如 pipenv, version 2021.5.29 # 然后就可以使用 pipenv 创建python2的虚拟环境了。
- 安装虚拟环境
> $HOME/.local/share/python2/bin/pipenv install --dev --python=python2
Creating a virtualenv for this project... Pipfile: /home/yourname/python2.7/Pipfile Using /usr/local/share/python2.7/bin/python2.7 (2.7.18) to create virtualenv... ⠸ Creating virtual environment...created virtual environment CPython2.7.18.final.0-64 in 166mscreator CPython2Posix(dest=/home/yourname/.local/share/virtualenvs/python2.7-dgFSHbht, clear=False, no_vcs_ignore=False, global=False)seeder FromAppData(download=False, pip=bundle, wheel=bundle, setuptools=bundle, via=copy, app_data_dir=/home/yourname/.local/share/virtualenv)added seed packages: pip==20.3.4, setuptools==44.1.1, wheel==0.37.1activators NushellActivator,PythonActivator,FishActivator,CShellActivator,PowerShellActivator,BashActivator ✔ Successfully created virtual environment! Virtualenv location: /home/yourname/.local/share/virtualenvs/python2.7-dgFSHbht Creating a Pipfile for this project... Pipfile.lock not found, creating... Locking [dev-packages] dependencies... Locking [packages] dependencies... Updated Pipfile.lock (dfae9f)! Installing dependencies from Pipfile.lock (dfae9f)...🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00 To activate this project's virtualenv, run pipenv shell. Alternatively, run a command inside the virtualenv with pipenv run.
注意 Virtualenv location 开头这一行信息。表明了,你新创建的虚拟环境在哪里。今后执行python2 都到此虚拟环境下面,尽量保证安全。