fedora-python-wsl环境搭建
目录
fedora-python-wsl环境搭建
在 10.59 服务器上运行 python 时偶尔会遇到由于开发环境不同导致的 bug
因此在本地搭建一个类似环境可以起到一定的测试效果,避免一些不必要的问题
0. 服务器
在服务器上查看系统版本
[wokeji@dev1 ~]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[wokeji@dev1 ~]$ python
Python 3.10.4 (main, Oct 25 2022, 18:28:12) [GCC 8.3.1 20190311 (Red Hat 8.3.1-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
由于 cent os 7 即将停止维护,我选择了 fedora 39
,并没有追求与服务器环境的完全一致,不过 python
是一定要选择同版本的 3.10.4
的。
1. 本地 wsl
步骤不复杂:
微软官方提供了很完善的文档。说明中要求:
- 必须在安装了运行 WSL 2 的 Linux 发行版的情况下启用 WSL。
- 必须安装了适用于 Windows 的 Docker Desktop,启用了 WSL 2 引擎并选中了集成,请参阅 Docker Desktop 许可协议,了解使用条款的更新。
但我们不完全按照文档来,可以忽略第二个必须要求
wsl.exe --install
这一步除了会安装好
wsl
相关组件外还会安装一个Ubuntu
,这样便满足了第一项要求
注意安装后可能需要一次重启
之后可以wsl --unregister Ubuntu
来卸载掉这个Ubuntu
- 下载tar包
按照文档,应该是先创建镜像,然后导出 tar 包
在 https://koji.fedoraproject.org 直接下载所需 tar 包,这样便不需要在本地安装docker
我下载的是 Fedora-Container-Base-39-20240222.0.x86_64.tar.xz
- 解压 xz 文件
里面的Fedora-Container-Base-39-20240222.0.x86_64.tar 还需要再打开
在里面还有一个layer.tar
,这才是我们需要的文件
将layer.tar
提取出来
- 配置wsl
# 创建 wsl 存储目录
mkdir $HOME\wsl\fedora
# 导入 tar 文件
# wsl --import <Distro> <InstallLocation> <FileName>
wsl --import fedora $HOME\wsl\fedora $HOME\Downloads\fedora-35-rootfs\layer.tar
# 查看目前已存在的子系统
wsl -l
# 设置默认发行版
wsl -s fedora
# 打开指定发行版
wsl -d fedora
#查看正在运行的子系统
wsl --list --running
# exit 可以退出 wsl
# wsl --shutdown 关闭所有在运行的子系统
# wsl --terminate <Distribution Name> 关闭指定子系统
wsl --terminate <Distribution Name>
- 配置python
编译安装,不能直接 make install
,fedora 的 dnf 包管理是基于 python 的,直接替换默认的 python 版本会导致 dnf 不能正常运行
# 安装 编译工具链
sudo dnf groupinstall 'Development Tools'
sudo dnf install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libdb-devel libpcap-devel xz-devel open-ssl
# 下载 python3.10.4 源码
wget https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz
tar -xzf Python-3.10.4.tgz
cd Python-3.10.4
# 编译安装
./configure --prefix=/usr/local/opt/python-3.10.4 --enable-optimizations
make -j$(nproc)
sudo make altinstall
# 创建软链接
sudo ln -sf /usr/local/opt/python-3.10.4/bin/python3.10 /usr/bin/python310
# 准备虚拟环境
cd py
python310 -m venv venv310
在安可的 uos 上安装 python3.10.4
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
wget https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz
tar -xf Python-3.10.4.tgz
cd Python-3.10.4
./configure --enable-optimizations
make -j $(nproc)
sudo make altinstall
python3.10 --version