统信UOS安装python3.11

解决无root权限

显示无root权限,如想获得root权限可以在控制中心选择进入开发者模式

图片

设置–>通用–>开发者选项–>微信登录–>绑定手机号–>输入锁屏密码–>不重启

重新运行 sudo su

使用 UOS 官方软件源

先更新系统:

1
2
sudo apt update
sudo apt upgrade -y

查看是否有 python3.11 包:

1
apt search python3.11

图片
你在 UOS 里 apt search python3.11,搜索结果里有:

  • python311.runtime.szbt → Python3.11 的运行环境
  • python311.devel.szbt → Python3.11 的开发头文件和工具
  • 这两个包安装位置是 /opt/deepin-shared-libs/python311

说明 统信 UOS 已经提供了 Python 3.11(但是不在系统默认路径下)。

安装 Python 3.11

直接执行:

1
sudo apt install python311.runtime.szbt python311.devel.szbt -y

图片
已经成功装上了 Python 3.11.6,但是运行/opt/deepin-shared-libs/python311/bin/python3.11 --version时报错:

1
error while loading shared libraries: libpython3.11.so.1.0: cannot open shared object file

这是因为 Python3.11 装在 /opt/deepin-shared-libs/python311/ 里,但系统的动态库搜索路径里没有这个目录。

添加库路径

执行以下命令:

find /opt/deepin-shared-libs/python311 -name "libpython3.11.so\*"

确切的库路径。

图片
库文件就在:

1
/opt/deepin-shared-libs/python311/lib/libpython3.11.so.1.0

说明 Python3.11 已经装好了,只是系统不知道这个库在哪里。

1.把库目录写入动态库配置:

1
echo "/opt/deepin-shared-libs/python311/lib" | sudo tee /etc/ld.so.conf.d/python311.conf

2.更新库缓存:

1
sudo ldconfig

3.再运行:

1
/opt/deepin-shared-libs/python311/bin/python3.11 --version

图片
如果能正常输出版本,就加个软链接,方便用:

1
sudo ln -s /opt/deepin-shared-libs/python311/bin/python3.11 /usr/local/bin/python3.11

然后就能直接:

1
python3.11 --version

pycharm解释器路径选择/opt/deepin-shared-libs/python311/bin/python3.11

从源码编译 Python 3.11

如果源里没有 python3.11,可以自己编译:

  1. 安装依赖:
1
2
3
sudo apt install -y build-essential zlib1g-dev \
libncurses5-dev libgdbm-dev libnss3-dev libssl-dev \
libreadline-dev libffi-dev curl libsqlite3-dev wget tk-dev
  1. 下载 Python 3.11 源码:
1
2
3
4
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz
sudo tar xvf Python-3.11.9.tgz
cd Python-3.11.9
  1. 编译并安装:
1
2
3
sudo ./configure --enable-optimizations
sudo make -j$(nproc)
sudo make altinstall

注意:用 make altinstall 而不是 make install,避免覆盖系统自带 python3。

  1. 检查版本:
1
python3.11 --version

添加pip3

确认 pip3.11 是否存在

先检查:

1
ls /opt/deepin-shared-libs/python311/bin/ | grep pip 

大概率会有 pip3.11,比如:

图片

用完整路径执行 pip

试一下:

1
/opt/deepin-shared-libs/python311/bin/pip3.11 --version 

如果能显示版本,就可以安装:

1
/opt/deepin-shared-libs/python311/bin/pip3.11 install pandas 

为了以后直接用 pip3.11,可以建软链接:

1
2
3
sudo ln -s /opt/deepin-shared-libs/python311/bin/pip3.11 /usr/local/bin/pip3.11 

sudo ln -s /opt/deepin-shared-libs/python311/bin/pip3.11 /usr/local/bin/pip3

这样就可以直接:

1
pip3 install pandas 

为什么使用pip3而不是pip?

如果系统有其他依赖 Python3.7/3.9 的 pip,可能会导致工具出问题,所以不建议替换系统默认 pip。


如果 pip3.11 根本不存在

那就用 Python 自带的 ensurepip 安装:

1
/opt/deepin-shared-libs/python311/bin/python3.11 -m ensurepip --upgrade /opt/deepin-shared-libs/python311/bin/python3.11 -m pip install --upgrade pip setuptools wheel 

之后再试:

1
/opt/deepin-shared-libs/python311/bin/pip3.11 --version 

建议:安装第三方包时,不要直接装到系统里,最好用虚拟环境:

1
/opt/deepin-shared-libs/python311/bin/python3.11 -m venv venv source venv/bin/activate pip install pandas