有时候服务器因为各种原因是不能连接外网的,我们如果要装python的包需要离线安装,这是一件很令人抓狂的事情。
我的方法有两种:
1.在python包的官网或者镜像上找到符合自己当前操作系统的whl文件,进行下载,然后上传到服务器,依次手动安装。
2.(更为推荐)通过一个可以联网的机器python虚拟环境来安装,这样可以自动解决好相关依赖的问题。
(1) 找一个和服务器操作系统相同的虚拟机
(2) 新建一个python虚拟环境(主要是为了保证之前没有安装过任何其他的包,以免干扰服务器环境)
(3) 新建一个文件夹,不妨命名为package
(4) 以安装grpcio为例,运行
cd package
pip install grpcio
pip download grpcio
(5) 当安装好之后,运行
pip freeze > requirements.txt
就可以自动生成需要的包的列表。此时,package文件夹下面应该有一些whl文件,以及一个requirements.txt文件。
(6) 到文件夹之外,把这个文件夹打包上传到服务器,
命令如下:
cd ..
tar -zcvf package.tar.gz ./package
传到服务器之后,解压,然后进入这个目录:
tar -zxvf package.tar.gz
cd ./package
在这个目录下,运行
pip install --no-index --find-links=./ -r requirements.txt
就可以自动安装所有的python包了。
(7) 之后有包要更新或者新增,可以手动把单个包的whl传上去,也可以如上步骤再来一遍。
(8) 可以用pip list来检查一下自己的包是否成功安装。