之前一直觉得在一个断网的电脑上离线安装 Python 包是一件痛苦的事情,可能是由于刚接触 Linux 时,离线安装软件,需要下载各种信赖包留下的阴影。今天尝试了一下,过程还不是特别繁琐。

1. 下载所要安装的包文件

之前一直都是从官网上下载对应的安装包,后来发现也可以用pip下载对应的文件,而且下载过程中,也会把一些信赖也一起下载了。比如我要在断网环境中安装pyecharts包,可以先在连网的机器上创建一个新的虚拟环境

virtualenv test --no-site-packages
source test/bin/activate

这里选择不使用系统中已经安装好的包,只保留一些基础包,尽量减少一些包的遗漏。当然也可以使用conda create --name test python=<version>来创建虚拟环境。下载包的过程也很方便,直接使用pip download

pip download pyecharts

下载的过程也会和安装的过程中一样,会解析对应的包信赖关系,安装过程需要什么包,那下载时也会下载相应的包。详细的参数说明可以参考pip文档。这里下载后的文件如下:

Jinja2-2.11.1-py2.py3-none-any.whl
MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
echarts-china-cities-pypkg-0.0.9.tar.gz
echarts-china-counties-pypkg-0.0.2.tar.gz
echarts-china-provinces-pypkg-0.0.3.tar.gz
echarts-countries-pypkg-0.1.6.tar.gz
lml-0.0.9-py2.py3-none-any.whl
prettytable-0.7.2.tar.bz2
pyecharts-1.7.1-py3-none-any.whl
pyecharts_jupyter_installer-0.0.3-py2.py3-none-any.whl
simplejson-3.17.0.tar.gz

如果你要下载的包很多,也可以利用requirement.txt文件列出需要的包名,一起下载。

2. 安装

下载完成后,把文件拷贝到另一台机器上,打开终端

pip install --no-index --find-links 拷贝文件目录路径 pyecharts

正常的话,应该就安装完成了。如果途中报错缺少某个包,可以按照前面方法重新下载安装。在这里因为断网,需要手动为pyecharts设置本地的 JS 文件,设置js_host参数