最近有个项目不能使用外网, python开发环境需要离线安装, 于是记录一下离线安装的过程

Anaconda3/Archiconda3

管理开发环境一直使用的是Anaconda, 因为其安装后自带了python3.8pip等一些基础包, 能省掉很多安装的麻烦

由于这个项目用到的服务器是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

python开发环境离线安装

升级pip

上面的Archiconda3安装好后, 自带的是python3.7版本, 有需要的可以自己升级, 但是自带的pip只有10.x版本, 需要手动升级到最新版, 否则有些安装包可能安装会出错

来到pip资源包的官方网站: PyPI · The Python Package Index, 搜索pip, 在download files中可以下载离线的安装包

python开发环境离线安装

pip的安装包一般有两个格式, .whl格式和.tar.gz格式, 两种格式都可以进行离线安装

  • .whl

不过针对不同的操作系统, 一般会有不同的.whl

如这里的pip-xxxxx-any.whl, any表示任何系统都可以用这个.whl文件安装

而有的包, 比如pandas, 就没有这个pandas-xxx-any.whl了, 只有特定的系统对应的whl

python开发环境离线安装

.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中进行安装时, 发现没有三个依赖, 那么就会尝试联网下载这三个依赖, 但是由于没有外网, 导致安装报错

python开发环境离线安装

于是安装这三个依赖, 注意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

python开发环境离线安装

后来来到pandas的github官网, 里面介绍了源码安装pandas的安装步骤

python开发环境离线安装

离线安装requirements

pip install --no-index --find-links=pip_packages -r requirements.txt

pip_packages是存放离线安装包的目录

分类:

技术点:

相关文章: