安装
背景:
接手公司陈年代码,环境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
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 # 安装