麒麟离线环境部署python项目

现有一个python项目需要移到麒麟操作系统上。

麒麟系统库中自带的python为3.7.9,版本太低,不能满足要求,现在需要离线手动安装所有项目依赖。好麻烦、

项目运行环境为

NAME="Kylin Linux Advanced Server"
VERSION="V10 (Sword)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)"
ANSI_COLOR="0;31"
  • Python 3.10
  • mysql-connector-python
  • pandas
  • numpy
  • beautifulsoup4
  • 其他

编译安装Python 3.10.9

下载源码包

wget http://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz --no-check-certificate

上传到麒麟,解压编译

tar xvf Python-3.10.9.tgz
cd Python-3.10.9
./configure --prefix=/usr/local/python310 --enable-optimizations
make -j8
make install

软链接,不要覆盖原有的python链接,会导致dnf命令出错。

ln -s /usr/local/python310/bin/python3  /usr/bin/python310
ln -s /usr/local/python310/bin/pip3  /usr/bin/pip310

下载离线wheel包

确保本地有一个Python3.10.9 Linux环境,可以使用它pip下载依赖包,不用一个一个去找。下载之后传到麒麟安装。

mkdir package
pip3 download -d package mysql-connector-python pandas beautifulsoup4 shapely

下载的一堆包存到了package目录中。

把package上传到云端麒麟并安装。

pip3 install --no-index --find-link package mysql-connector-python pandas beautifulsoup4 shapely

python环境安装完成。


在用pandas read_sql方法报错:ModuleNotFoundError: No module named '_sqlite3'

python310/lib/python3.10/lib-dynload 缺少 _sqlite3.cpython-310-x86_64-linux-gnu.so

解决报错:

yum install sqlite-devel

重新编译安装即可。


离线下载docker镜像

docker镜像被墙了,unraid app更新不了了,服了。

从有科技的机器上pull image

docker pull hello-world

保存镜像到当前目录

docker image ls
docker save --output hello-world.tar image_id

把镜像copy到离线机器并load

docker load --input hello-world.tar

https://docs.docker.com/reference/cli/docker/image/load