Python安装

本文讲述了如何在旧版Python3.6.8环境中处理pip版本问题,包括在Ubuntu20.04上正确安装Python、管理依赖,以及处理可能遇到的lsb_release相关错误。
摘要由CSDN通过智能技术生成

安装

背景:
接手公司陈年代码,环境python环境竟然是3.6.8。安装Ubuntu22.04后,自带的python是3.10,使用sudo apt install python3-pip 成功后发现pip版本对应的python版本是3.10的,且切换到隔离环境venv无法使用pip。
搜索半天发现网上的方法都一样,让重新手动装。后来怀疑是系统版本过高问题,换成了Ubuntu20.04,成功了!!!!!
所以下面是对python3.6.8版本的安装,不过,其他版本大同小异,更改下载的版本号就行。

该安装流程针对pip在隔离环境无法使用的情况,哪里没对,欢迎各位大佬指出

Ubuntu 20.04

更新镜像源

sudo apt update
sudo apt install vim
sudo cp /etc/apt/source.list /etc/apt/source.list.bak
sudo vim /etc/apt/source.list

镜像源:清华镜像源      阿里巴巴    豆瓣   中国科学技术大学    华中科技大学

安装依赖

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

安装python

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz # 安装自己需要的版本
tar -xzf Python-3.6.8.tgz
cd Python-3.6.8
sudo ./configure --enable-optimizations --prefix=/usr/local/bin/python3.6 # 记得改版本号
sudo make && sudo make install

链接python、pip

sudo ln -s -f /usr/local/bin/python3.6/bin/python3.6 /usr/bin/python
sudo ln -s -f /usr/local/bin/python3.6/bin/pip3 /usr/bin/pip3
sudo ln -s -f /usr/local/bin/python3.6/bin/python3.6 /usr/bin/python

进入ls /usr/local/bin/python3.6/bin/ | grep pip 查看是否有pip文件,如果没有可能真要手动下载了,一般会有的。

python版本管理

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

# 选择版本
sudo update-alternatives --config python
>>> 输入编号设置默认使用python

修改镜像源

sudo mkdir ~/.pip
sudo vim ~/.pip/pip.conf

>>>
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
index-index-url = https://mirrors.aliyun.com/pypi/simple/ 
[install]
trusted-host =
 pypi.tuna.tsinghua.edu.cn
 mirrors.aliyun.com

验证pip

pip install virtualenv

可能遇到的错误

......
File "/usr/local/python/lib/python3.6/subprocess.py", line 512, in run
 raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

缺少文件,网上很多说删除 lsb_release.py 模块,千万别这么操作,解决如下:

sudo find / -name lsb_release.py

>>>
/usr/lib/python3/dist-packages/lsb_release.py # 复制python3 这个
/usr/lib/python2.7/dist-packages/lsb_release.py
/usr/share/pyshared/lsb_release.py
/snap/core20/1828/usr/share/subiquity/subiquitycore/lsb_release.py
# 复制lsb_release.py 到上面报错的 subprocess.py 所在文件夹下
sudo cp /usr/lib/python3/dist-packages/lsb_release.py /usr/local/python/lib/python3.6

CentOS

centos下安装python3

Docker

python压缩包下载https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

FROM ubuntu:21.04

ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai

RUN mkdir ~/.pip && mkdir -p /home/project/
ADD pip.conf ~/.pip/pip.conf
COPY Python-3.6.8/ /home/Python-3.6.8/ # 准备解压的python文件

RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak &&\
    apt-get update &&\
    apt-get install -y wget vim git make build-essential libssl-dev zlib1g-dev libbz2-dev  libreadline-dev libsqlite3-dev wget curl libncurses5-dev libncursesw5-dev&&\
    # cd /home &&\
    # wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz &&\
    # tar -zvxf /home/Python-3.6.8 &&\
    cd /home/Python-3.6.8 &&\
    ./configure --prefix=/usr/local/python3.6 &&\
    make && make install &&\
    ln -s /usr/local/python3.6/bin/python3.6 /usr/bin/python3 && ln -s /usr/local/python3.6/bin/python3.6 /usr/bin/python &&\
    ln -s /usr/local/python3.6/bin/pip3 /usr/bin/pip3 && ln -s /usr/local/python3.6/bin/pip3 /usr/bin/pip

WORKDIR /home/

环境依赖使用

这里只讲简单的 requirements.txt 文件管理依赖,还有poetry工具,conda 工具,都可以管理python依赖。

python3 -m venv <venv name> # 创建环境
source <venv name>/bin/activate # 进入环境
deactivate # 退出环境
pip freeze > requirements.txt # 导出
pip list --format=freeze > requirements.txt # 不会含有文件路径
pip install -r requirements.txt # 安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值