ubuntu(wsl2)下编译Python3.10

因为torch2.0的model.compile暂时只支持Linux系统,所以在windows上用wsl2装一个torch,顺便编译一下python3.10

1. 下载源码

wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz
tar -zxf Python-3.10.11.tgz
cd Python-3.10.11

2. 安装依赖

  • 编译源码需要gccmake,如果已经有了可以跳过安装这两个
sudo apt install gcc make
  • 安装依赖

有了gcc和make之后理论上就可以编译源码了,但是由于依赖的问题,会导致一些模块无法编译,所以需要根据需要安装一些依赖

直接编译的结果

sudo apt install libbz2-dev libncurses5-dev libncursesw5-dev libgdbm-dev uuid-dev libffi-dev liblzma-dev libsqlite3-dev libssl-dev zlib*-dev libreadline-dev

build-essential:用于编译_ctypes模块
libbz2-dev:用于编译_bz2模块
libncurses5-dev:用于编译_curses模块
libncursesw5-dev:用于编译_curses模块
libgdbm-dev:用于编译_gdbm模块
uuid-dev:用于编译_uuid模块
libffi-dev:用于编译_ctypes模块
liblzma-dev:用于编译_lzma模块
libsqlite3-dev:用于编译_sqlite3模块
libssl-dev:用于编译_ssl模块
zlib*-dev:用于编译zlib模块
libreadline-dev:用于编译readline模块
(上边这些都是copilot自动补全的,模块对应的不知道对不对,但是这些依赖没有问题)

3. 编译

安装完之后编译,可能只有小部分模块还有问题,但是不影响使用(我这里是_dbm和_tkinter没有编译)

./configure --enable-optimizations --prefix=</Your/Path>
make -j8
sudo make install

configure的时候可以加上--enable-optimizations,这样编译出来的python会有一些优化,但是编译时间会变长, --prefix指定安装路径
make的时候加上-j8,表示开启8个线程编译,加快编译速度

安装完后之后可能还需要做一些软连接的操作,我这里安装目录是/usr,所以不需要这些了
直接运行python3 -V就可以看到版本了

4. cuda-toolkit安装

因为宿主机上已经有了nvidia的驱动,所以wsl2上不需要再装驱动了,可以用nvidia-smi查看显卡信息。
cuda-toolkit是另外的的东西,在这里选好系统后,安装类型选**deb(netword)**,然后复制命令运行就好

具体细节可以看这篇文章

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda