• Arm64服务器离线安装pip包


    1. 正确操作

    背景

    内网服务器无法连接互联网,需要在内网服务器物理机上安装开发需要的pip软件包。

    系统为arm架构,需要在有网络的服务器上准备好需要的pip包,然后拷贝到内网服务器上离线安装。

    联网服务器上操作

    编辑需要的pip包文件 requirements.txt,其中Cython为scikit-learn安装时需要的包,不写的话不会被下载下来:

    grpcio == 1.33.2

    grpcio-tools == 1.33.2

    schedule == 0.6.0

     

    Cython == 0.29.21

    numpy == 1.19.3

    pandas == 1.1.4

    jupyterlab == 2.2.9

    matplotlib == 3.3.2

    scikit-learn == 0.23.2

    seaborn == 0.11.0

    sweetviz == 2.0.2

    下载requirements.txt文件中的pip包:

    pip download -d packages -r requirements.txt

    下载下来的大部分为为.whl文件,但有一些为.tar.gz源码文件,因为很多包没有做aarch64的whl文件。

    注:如果pip download的有网络环境的机器不是arm64架构,需要用 --platform 参数指定系统环境。

    把whl文件和tar.gz分开到不同目录,并打包文件夹。

    cd packages
    mkdir whl targz
    mv *.whl whl
    mv *.tar.gz targz
    cd ..
    tar -cvzf packages.tar.gz packages

    内网离线服务器上操作

    packages.tar.gz上传到服务器python3-env(自己创建的)目录,并解压。

    创建并进入虚拟环境,会在当前工作目录下产生一个文件夹:

    cd aidev
    python -m venv dev-env
    source dev-env/bin/activate

    以下操作均在 dev-env 环境中。

    首先安装whl 格式的pip包:

    # 进入packages目录
    pip install whl/* --no-deps           # 安装whl包,--no_deps参数不加无法安装上

    接下来安装tar.gz文件。

    解压targz下的所有.tar.gz文件:

    image.png

    进入解压后的文件夹,执行以下命令:

    python setup.py install

    除matplotlib,pyzmq,和scikit-learn外的包都可以顺利安装上。

    pyzmq问题如下:

    image.png

    按提示执行以下命令可顺利安装:

    pip install .

    注:在之前试错(2中错误操作2)的过程中,安装了zeromq3-devel,不知道不装的话是否会有影响。https://pypi.org/project/pyzmq/

    # 离线安装zeromq3-devel
    # ------ 有网络机器
    yum -y install yum-utils
    yum install epel-release
    repotrack zeromq3-devel     # 下载离线安装包
    
    # ------ 内网无网络连接机器上
    # 进入目录
    rpm -Uvh --force --nodeps *.rpm

    matplotlib问题如下:

    image.png

    按提示下载freetype-2.6.1.tar.gz文件,解压后放到 matplotlib-3.3.2/build 目录下,再次执行 python setup.py 即可。

     

    scikit-learn问题如下(前面安装了Cython,就不会出错了,开始时requirements文件中没有Cython):

    image.png

    通过安装Cython解决。

     

    安装完scikit-learn后导入 sklearn报错:image.png

    解决办法:退出在scikit-learn-0.23.2目录,再次执行,就不会报错。

     

     

    2. 错误尝试

    2.1 错误尝试1

    pip download 之后(同1中的requirements.txt, 少了Cython),然后用下图中的pip install命令安装。

    ERROR: Could not find a version that satisfies the requirement numpy>=1.15 (from versions: none)

       ERROR: No matching distribution found for numpy>=1.15

       Traceback (most recent call last):

         File "/root/aidev/training/lib/python3.7/site-packages/setuptools/installer.py", line 128, in fetch_build_egg

           subprocess.check_call(cmd)

         File "/usr/local/lib/python3.7/subprocess.py", line 363, in check_call

           raise CalledProcessError(retcode, cmd)

    subprocess.CalledProcessError: Command '['/root/aidev/training/bin/python3', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmp_if8ygbm', '--quiet', 'numpy>=1.15']' returned non-zero exit status 1.

    image.png

    image.png

    2.3 错误尝试2

    在有网络的arm服务器上 pip wheel 命令下载软件包,并打包成 whl 文件(主要是.tar.gz源码文件打包成 whl文件)。然后在内网服务器上用pip install 安装:

    pip install --no-index --find-links=/root/python3-env/whl_develop -r /root/python3-env/requirements.txt

    安装成功,pip list能够看到包,其实没有真正安装成功。

    执行 jupyter notebook --generate-config 命令会报错:

    ImportError: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

    image.png

    错误原因:python3安装时没有编译动态链接库,详见 centos7 中安装python3.x,并编译动态连接库。重新安装python3,再次执行执行 jupyter notebook --generate-config 还是会报错:

    ImportError: /lib64/libstdc++.so.6: symbol __cxa_thread_atexit_impl, version GLIBC_2.18 not defined in file libc.so.6 with link time reference

    image.png

    为解决该问题进行了多种操作,如用 libstdc++.so.6.0.25(来自docker),替换本机的 libstdc++.so.6.0.19 到 libstdc++.so.6的软链接,又会报别的错。最后又换回来了。 安装 zeromq3-devel,还是不能解决问题。

     

    错误原因:在别的机器上编译的文件(从源码打包whl文件会进行gcc编译),到别的机器上执行可能会有问题。

     

    2.3 错误尝试3

    此错误是在正确安装好之后进行的,想看看pip安装好whl文件之后,把matplotlib少的freetype文件添加进去后,用pip是否可以安装tar.gz文件,还是报错:

    ERROR: Command errored out with exit status 1: /root/aidev/dev-env/bin/python /root/aidev/dev-env/lib/python3.7/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-in9tv3sg/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools>=40.6.0' wheel 'cffi>=1.0' Check the logs for full command output.

    image.png

    用pip list查看,setuptools 和 cffi明明安装好了:

    image.png

    image.png

     

  • 相关阅读:
    webstorm & phpstorm破解
    JSON和JSONP
    angular.extend(dst, src)对象拓展
    angular.foreach 循环方法使用指南
    angular 指令@、=、&的用法和区别
    angular directive指令相互独立
    angular directive指令的复用
    对apply和call的理解
    图片上传
    vue 路由缓存
  • 原文地址:https://www.cnblogs.com/sclczk/p/14103648.html
Copyright © 2020-2023  润新知