针对内网无法直接使用pip安装的情况, 在win上
使用 pip 根据requirements文件下载安装包,到离线环境中再使用 pip 安装
1. 首先,在项目中分析出所有依赖的库
pip freeze > requirements.txt # 该方法仅可以使用在虚拟环境中,会将python 解释器下的所有包都导出
2. 将所有包下载到DIR这个目录中
-
pip download -r requirements.txt -d /tmp
-
pip wheel -w DIR -r requirements.txt
- 这两条命令的区别在于wheel 方式下载会将下载的包放入wheel 缓存,但缺点是wheel 不可以下载源码包
- download 命令会查看wheel缓存,然后再去PyPI下载库,但download命令下载的包不会进入wheel缓存,download 的优点是可以下载源码包
- 需要注意,使用wheel 方式安装可能会报错,因为有些包是源码包,不能被打包成wheel 格式
- download 方法下载的包,不会对依赖性进行检查,这意味着,如果下载 Flask-PyMongo 这个包,只会下载该包,而不会下载 pymongo,经试验发现,download 适合补充wheel不可下载的包,两者搭配使用,才能将requirements文件的库完整的下载
- 注意: 如果只使用download 方法下载,很有可能安装时候会报错
3. 将文件打包后放到离线服务器上,并进行解压缩
pip3 install --no-index --find-links=DIR -r requirements.txt
pip install --no-index --find-links=d:\python3.6\temp -r requirements.txt
命令说明
- freeze 将依赖关系分析出来并 使用管道符导入到requirements 文件中
- download 分析 requirements 文件,将所有包进行下载,通过 d 选项导入 DIR 文件夹
- wheel 分析requirements 文件,并将所有包及其依赖包下载为 wheel 格式,通过 w 选项导入 DIR 文件夹中
- –find-links 指定离线安装的文件夹DIR,也就是你下载好的包
- 注意: --no-index 必须搭配 --find-links 使用
例如:
1, pip freeze >requirements.txt
2, pip download -r requirements.txt -d /tmp 或者pip install --download /tmp/packages -r requirements.txt
3, 批量安装已经导出的包
- 将temp文件夹和requirements.txt拷贝到内网环境下的机器,temp文件夹放在Python3.6的根文件夹下,requirements.txt放在python3.6\scirpts,pip.exe也在该文件夹下。然后执行下边的命令