最近有個項目不能使用外網, python開發環境需要離線安裝, 於是記錄一下離線安裝的過程
Anaconda3/Archiconda3
管理開發環境一直使用的是Anaconda, 因為其安裝后自帶了python3.8
和pip
等一些基礎包, 能省掉很多安裝的麻煩
由於這個項目用到的服務器是ARM架構的AArch64(通過uname -a
可以查看系統架構信息), 而Anaconda官網下載Anaconda | Individual Edition中沒有這個系統對應的安裝包, 但是github上已經有大神編譯好的aarch64版本的anaconda(https://github.com/Archiconda/build-tools/releases)直接下載安裝即可
Archiconda3-0.2.3-Linux-aarch64.sh
升級pip
上面的Archiconda3安裝好后, 自帶的是python3.7
版本, 有需要的可以自己升級, 但是自帶的pip
只有10.x
版本, 需要手動升級到最新版, 否則有些安裝包可能安裝會出錯
來到pip
資源包的官方網站: PyPI · The Python Package Index, 搜索pip, 在download files
中可以下載離線的安裝包
pip的安裝包一般有兩個格式, .whl
格式和.tar.gz
格式, 兩種格式都可以進行離線安裝
- .whl
不過針對不同的操作系統, 一般會有不同的.whl
包
如這里的
pip-xxxxx-any.whl
, any表示任何系統都可以用這個.whl
文件安裝而有的包, 比如pandas, 就沒有這個
pandas-xxx-any.whl
了, 只有特定的系統對應的whl
包
.whl
包的安裝命令為:
pip install xxxx.whl
- .tar.gz
但是.tar.gz
只有一個, 是源碼, 所有系統都能進行安裝
.tar.gz
包的安裝命令為:
pip install xxx.tar.gz
或者
1. 解壓tar.gz文件
2. 進入解壓后的目錄
3. 執行 python setup.py install
一般我比較習慣先找安裝系統對應的.whl
包, 找不到的話就用.tar.gz
源碼安裝, 這里我們下載pip-21.1.1-py3-none-any.whl
並安裝
pip install pip-21.1.1-py3-none-any.whl
升級setuptools
setuptools也和安裝有關系, 最好也進行升級, 還是在pipy網站進行下載
pip install setuptools-56.2.0-py3-none-any.whl
離線安裝pandas
在pipy網站並沒有找到支持AArch64系統的pands.whl
包(見上圖), 於是選擇下載源碼pandas-1.2.4.tar.gz
進行安裝
pip install pandas-1.2.4.tar.gz
但是發現安裝包錯, 原因是安裝pandas
前需要先安裝三個依賴numpy
, python_dateutil
, pytz
, 在pip中進行安裝時, 發現沒有三個依賴, 那么就會嘗試聯網下載這三個依賴, 但是由於沒有外網, 導致安裝報錯
於是安裝這三個依賴, 注意numpy
需要安裝對應系統的版本
pip install numpy-1.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
pip install python_dateutil-2.8.1-py2.py3-none-any.whl
pip install pytz-2021.1-py2.py3-none-any.whl
安裝好三個依賴后, 繼續進行安裝pandas: pip install pandas-1.2.4.tar.gz
, 發現還是報錯的, 於是意識到這個安裝方式可能就是需要進行聯網才行, 於是換成python setup.py install
這種安裝方式試試看
1. 解壓pandas-1.2.4.tar.gz
tar -zxvf pandas-1.2.4.tar.gz
2. 進入解壓后的文件
cd pandas-1.2.4
3. 執行安裝
python setup.py install
結果又發現一個報錯
Traceback (most recent call last):
File "setup.py", line 761, in <module>
setup_package()
File "setup.py", line 731, in setup_package
ext_modules=maybe_cythonize(extensions, compiler_directives=directives),
File "setup.py", line 496, in maybe_cythonize
raise RuntimeError("Cannot cythonize without Cython installed.")
RuntimeError: Cannot cythonize without Cython installed.
原因是Cython
沒有安裝, 於是繼續下載Cython
安裝
pip install Cython-0.29.23-py2.py3-none-any.whl
然后繼續進行pandas安裝, 終於發現沒有報錯了, 剩下的只需要等待就行了
python setup.py install
后來來到pandas的github官網, 里面介紹了源碼安裝pandas的安裝步驟
離線安裝requirements
pip install --no-index --find-links=pip_packages -r requirements.txt
pip_packages
是存放離線安裝包的目錄