脚本安装第三方包
作者:互联网
参考1<不成熟>
install_scripts.py
关注点: tar.gz解压后包,如何脚本安装 --- 经过当时测试, 最后发现此类解压后包还是手动安装为好.
import os
import subprocess
import time
from icecream import ic
"""
>>>总结:
1 把当前文件放在 whl文件结尾的同级目录下
2 安装顺序
2.0 用PyCharm打开项目> 创建好虚拟环境 > Terminal中执行dir把当前所有需要安装的文件列出,复制到一个text中,然后放到excel中,作为之后安装之后的确认对比.
还有一种办法: 把其所有文件放到一个列表中,每安装一个,把其移除,最后剩下的则是没有安装的.
2.1 先用脚本安装whl结尾文件
2.2 关于压缩文件(tar结尾的的压缩包)
Ternimal > 先以pip install 名字==版本 方式安装(即相当于以外网下载.)
2.3 再执行一次 2.1
2.4
手动解压tar.gz包 > 手动安装
2.5 若还有未安装好的文件, 再执行一次2.1及2.4 , 然后查看未安装好的软件,根据报错解决未成功安装的软件
"""
pkgs_path = os.path.dirname(__file__)
ic(pkgs_path)
libs_list = os.listdir(pkgs_path)
error_list = []
error_dir_list = []
for lib in libs_list:
# ic(lib)
# 若是whl文件,则pip直接安装
if lib.endswith('.whl'):
# pass
cmd = 'pip install %s' % lib
ic(cmd)
res = subprocess.Popen(cmd,
shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# ic('stdout',res.stdout.read().decode('gbk')) # 获取正确命令执行之后的结果
ic('stderr', res.stderr.read().decode('gbk')) # 获取错误命令执行之后的结果
if res.stderr.read():
error_list.append(lib)
# 3 如果是tar.gz解压后的文件夹
elif os.path.isdir(lib):
if lib in ["Django-2.0", "Mako-1.0.6"]:
continue
ic(lib)
cmd = f'cd ./{lib}'
cmd1 = f'python setup.py install'
# res = subprocess.Popen("dir",shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# ic('stderr', res.stdout.read().decode('gbk')) # 获取错误命令执行之后的结果
# ic(cmd,cmd1)
#
ic(cmd + "&" + cmd1)
res = subprocess.Popen(cmd + "&" + cmd1 + "&" + "cd ../",
shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
ic('stderr', res.stderr.read().decode('gbk')) # 获取错误命令执行之后的结果
time.sleep(1)
if res.stderr.read().decode('gbk'):
item = {
"name": lib,
"error": res.stderr.read().decode('gbk')
}
error_dir_list.append(item)
ic("crror", error_list)
ic(error_dir_list)
# ic('stdout',res.stdout.read().decode('gbk')) # 获取正确命令执行之后的结果
# ic('stderr',res.stderr.read().decode('gbk')) # 获取错误命令执行之后的结果
标签:脚本,lib,read,res,subprocess,stderr,ic,安装,第三方 来源: https://www.cnblogs.com/tslam/p/16537051.html