【个人经验总结】内网环境如何高效安装python模块包及相关依赖包

以往做法:

由于公司内网是无法访问互联网的,当需要安装某个python模块包时,之前的做法是下载一个安装一个,等安装的时候,提示自己缺少什么模块包时,再去下载相应的依赖包,然后传输到内网进行安装,但这样子经常就会出现,安装了一上午,相关的环境还是没有安装完成,就很低效。

现今改进:

在外网使用pip download指定版本号下载模块包,且将相关依赖包都一并下载保存到文件夹中,且使用python脚本生成对应的requirement.txt文件,然后再一起打包传输到内网。最后使用pip install 批量安装。这样子就可以节省掉很多的时间,也提高了环境准备的效率,可以将更多的时间投入到开发上。

具体操作:

下载nose-allure-plugin 1.0版本:

在外网(可连接互联网)上执行如下命令:
-d 指定下载保存的目录。

pip download nose-allure-plugin==1.0 -d  D:\tools\python\allure-packages  

【个人经验总结】内网环境如何高效安装python模块包及相关依赖包_第1张图片
下载完成后,在文件夹中可查看到所有的依赖包:
【个人经验总结】内网环境如何高效安装python模块包及相关依赖包_第2张图片

根据要求生成requirement.txt文件:

python的pip安装,可以读取requirement.txt文件,去下载、安装对应版本的模块包,格式为:模块名==版本号。
我这里自行书写了python脚本,来生成该requirement.txt文件,代码如下:

# coding: utf-8

import re,os

dirpath = "D:\\tools\\python\\allure-packages" # 模块包的路径

requirementpath = "D:\\tools\\python\\requirement.txt"  # requirement.txt保存路径

filelist = os.popen('dir '+dirpath).readlines() # 执行CMD命令dir,查看模块路径下的所有文件列表

with open(requirementpath, 'w+') as f:

    for filename in filelist[7:-2]:
        #print(filename)
        print(filename.split()[-1].split('-')[0]+'=='+filename.split()[-1].split('-')[1].strip(".tar.gz"))
        f.write(filename.split()[-1].split('-')[0]+'=='+filename.split()[-1].split('-')[1].strip(".tar.gz")+'\n')

执行脚本:
【个人经验总结】内网环境如何高效安装python模块包及相关依赖包_第3张图片
生成的requirement.txt文件:
【个人经验总结】内网环境如何高效安装python模块包及相关依赖包_第4张图片

传输到内网进行安装:

使用相应的传输工具,将刚刚的模块包目录和requirement.txt打包传输至内网并解压,解压至D:\tools\python\目录下(目录可更换)。
安装时,在cmd窗口执行如下命令:

pip install --no-index --find-links=D:\tools\python\allure-packages -r D:\tools\python\requirement.txt
# --find-links 指定查找模块包的路径,根据自己解压的目录自行修改
# -r 指定requirement.txt文件路径,根据自己存放的路径自行修改
# pip 将根据requirement.txt列出的模块包和版本号,去--find-links配置的路径下查找对应的安装包进行安装

执行完上述命令后,有如下字眼表示安装成功:
【个人经验总结】内网环境如何高效安装python模块包及相关依赖包_第5张图片
执行pip list命令,也可查看到已安装的模块包:
【个人经验总结】内网环境如何高效安装python模块包及相关依赖包_第6张图片
至此,外网下载所有依赖包,生成对应的requirement.txt文件,传输至内网进行安装,全流程就结束了。

你可能感兴趣的:(python,python)