实验室有一台不联网的大型机,因此只能利用离线安装包来装python. 但这着实令人有点犯难,几百个安装模块如果一个个的手动下载那滋味简直不要太爽。事实上,第一次还真的是这么干的…然而模块更新了…它竟然又又又更新了,鉴于目前模块更新的比重较大,且确实有用,我决心对大型机上的模块包做一次全面的升级。但这次是绝不能再采用手点的办法了(哭笑脸).2019.09.07对程序做了一些修正。
那问题来了,第一步就挺犯难的,该怎样获取需要安装的模块及其版本呢?
我的想法是这样的,需要离线安装python的人,一般而言都有至少一台可以联网的电脑,此外常用python的人可能会在这台联网的电脑上安装python,用于调试或解决不明错误。这样,直接把这台电脑上已安装的所有模块极其版本号导出就可以了。当然了,最好要确保该电脑上已安装的模块是最新版本。批量更新模块的程序如下:
# 将pip下载路径更改为清华镜像源(相比于国外网站网速更快)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 第一种 导出所有第三方模块清单
pip freeze > requirements.txt
# 第二种 仅导出当前依赖项目的模块清单
python -m pip install pipreqs
pipreqs ./ --encoding=utf-8 --force
python -m pip install --upgrade -r requirements.txt
# wheel下载与download下载相结合
python -m pip --default-timeout=100 download -d dirpath -r requirements.txt
python -m pip --default-timeout=100 wheel -d dirpath -r requirements.txt
注:其中dirpath为自定义的模块保存路径。default-timeout是为了防止网速不稳定所引起的断点不续传问题。
将所需的模块包都下载完成后,即可利用以下代码进行自动安装。
# 自动安装模块包
python -m pip install --no-index --find-links=dirpath -r requirements.txt
2019-09-05