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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM