一、前言及环境
1. 场景及整体思路
最近在做一个AI智能项目,开发过程中用自己的机子安装了很多库,开发完之后需要部署到公司内网的环境中,但是客户那边的环境是不能联网的,于是就需要离线进行库的安装。
上网搜了一下,大概思路是:
- 从可以联网电脑导出库的名称到文件;
- 下载指定库到指定文件夹;
- 将库名称文件和安装包拷贝到离线环境进行安装
整体流程如下图所示:
整个流程主要使用到库管理工具pip,我用的是python安装完已经存在的pip,没有pip的可自行安装。
2. 环境
- macosx 14.1
- python 3.7.2
注意:后面发现很多问题都是pip版本太低造成的,所以在往下做之前,可以先升级一下pip为最新版本:
python -m pip install -U pip
二、联网下载库
1. 导出库信息
pip freeze > requirements.txt
这个命令是将已经通过pip安装的包的名称记录到requirements.txt
文件中。
导出这个文件后,编辑文件,留下你需要的库,其他删除。
2. 下载库安装包
- 下载到当前目录下的dist目录,你可以选择更换目录
pip download ./dist -r requirements.txt
也可以直接进入目标文件夹然后执行:
pip download -r requirements.txt
将requirements.txt
中列出来的库下载到packages文件夹。
这里要注意,因为我的pip版本比较新,所以用的download,据说老一点的版本应该是install --download:
pip install --download ./packages -r requirements.txt
注意:如果requirements.txt里面存在不能通过pip安装的库,下载过程会报错。
三、离线安装库
1. 进行安装
将requirements.txt
和packages
文件夹拷贝到需要离线安装的服务器,
通过以下命令进行安装:
pip install --no-index --find-links=./dist -r requirements.txt
根据pip版本不同,里面的参数有可能是--find-link
。
2. 安装问题
- 使用MacOsx系统下载的离线安装包,在CentOS7上无法正常安装,观察下包名,发现依赖包应该是单独给Macosx定制的。
建议大家需要在指定操作系统部署,先在同样的操作系统下进行download依赖包,这样可以避免这个问题。