Linux 安装 Python3 开发环境

359 阅读3分钟

基础环境

windows 本机,使用 Docker Desktop + WSL2 搭建了一套 Linux 环境。WSL2 使用的 Ubuntu 22 作为内核。

前言

工作中接手了一个 Python 项目,因为一些依赖项(如 openssl)的原因,Windows本机无法 完全安装依赖并运行。于是基于 Linux 搭建一套开发环境。主要步骤如下:

  1. 基于 CenteOs 7.9 为基础镜像,运行容器,在容器内,将 Python3 环境搭建好,再将容器打成一个镜像(作为环境镜像)。这样得到一个纯净的 Python3 开发环境

  2. 创建容器时,使用 -v 参数,将代码目录挂载到 Windows 本机,本地代码改动后 可实时与容器中的代码同步。 这样即可实现,代码与运行环境分离,互不干扰,也可提升开发效率。原理类似 以前的远程开发机 或者 本地虚拟机作为开发机。

  3. 后续只需要本地修改代码,再进入容器内,运行项目就好。配置好 端口映射,即可正常访问。

过程

1. 下载 CenteOs 7.9 镜像
docker pull docker.io/library/centos:centos7.9.2009
2. 启动 CenteOs 7.9 容器。命名为项目名称

容器中的代码目录,放在 /data/web/,与 Windows 本机目录做好映射。

此处我为了方便,端口统一设置为 80,可根据实际情况更改。

docker run -it --name=devops-backend -p 80:80 -v /mnt/d/jk-work/devops-backend:/data/web/devops-backend centos:centos7.9.2009 bash

执行命令后,会进入容器内部,后续操作皆在容器内进行

3. 安装 Python3 环境
  1. 安装一些 前置依赖包
yum -y groupinstall "Development tools"

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

yum -y install libffi-devel 
  1. 下载解压 Python3 安装包。如果没有 wget,需要先 yum install wget

    安装包放在 /usr/local

cd /usr/local

wget https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tgz

tar -xvf Python-3.7.17.tgz
  1. 新建 /usr/local/python3 目录作为编译目录。执行 配置 和 编译
cd /usr/local/Python-3.7.17

# 配置路径
mkdir /usr/local/python3
./configure --prefix=/usr/local/python3

# 编译
make
make install
  1. 创建软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
  1. 查看是否安装成功

image.png

4. 安装项目依赖,run 起来(仅供参考)

以下是我的业务项目,可忽略,视实际情况为准,只是记录下执行流程。

特别注意:要使用 python3pip3

cd /data/web/devops-backend

# 安装依赖
pip3 install -r requirements.txt

# 初始化数据库
python3 manage.py makemigrations

# 运行
python3 manage.py runserver 0.0.0.0:80

初始化和运行过程中出现一些报错:

ModuleNotFoundError: No module named 'dotenv'。安装依赖即可解决

pip3 install python-dotenv

ValueError: Unable to configure handler 'default'。原因是配置问题,没有创建 logs 目录

mkdir logs
5. 完成。在 windows 宿主机访问 http://127.0.0.1:80,即可看到访问成功。

image.png

容器 保存为镜像文件

将容器保存为镜像

注意 save 的镜像,要使用 load 去加载

# commit 将容器存为镜像
docker commit -a '阿策' -m 'devops-backend开发环境镜像' [容器ID或容器名] devops-backend:dev

# 归档。使用 docker export + import 也可以的
docker save -o devops-backend_dev.tar devops-backend:dev

至此,一个 项目级Python3 开发环境 镜像就打好啦,可以把开发环境到处跑啦,只需要开发者安装好了 Docker 就行。

运行新镜像,在容器内运行服务
docker load -i devops-backend_dev.tar

docker run -it --name=devops-backend_dev -p 80:80 -v /mnt/d/jk-work/devops-backend:/data/web/devops-backend devops-backend:dev bash

# 以下步骤时容器内操作
cd /data/web/devops-backend

python3 manage.py runserver 0.0.0.0:80
宿主机访问 127.0.0.1:80,返回 404,说明服务起来了。ok 收工,接下来是业务代码调整。

image.png

参考链接

CentOS 7.4 安装python3及虚拟环境

CentOS 快速安装Python3和pip3