【Python】 使用__init__.py 自动安装import失败的三方库
__init__.py文件
注意:根据需要在代码中标红位置添加库名, 即uselibs
方法一:遍历列表
# coding:utf-8 import os, sys
# 三方库 如果引用的库未安装,则自动安装 try: # import Matplotlib # 导入需要添加的库名 import xlwt # 新建xls import xlrd # 读取xls from xlutils.copy import * # 修改xlsexcept ImportError as ime: # posix:对应 linux,nt:对应 windows,java:对应 java 虚拟机 if os.name == 'posix': # posix:对应 linux print("导入模块失败,失败原因:{}".format(ime)) elif os.name == 'java': # java:对应 java 虚拟机 print("导入模块失败,失败原因:{}".format(ime)) elif os.name == 'nt': # nt:对应 windows # 方法一: uselibs = ['xlwt', 'xlrd==1.2.0', 'xlutils'] # 添加需要安装的库名 try: for lib in uselibs: os.system("pip install " + lib) print("\033[1;34m pip安装 {} 成功/已存在 \033[0m".format(lib)) print("\033[1;34m \n全部安装成功,暂停10s执行后续内容 \033[0m") time.sleep(10) except Exception as e: print("\033[1;34m 未全部安装成功,退出程序,异常原因:{} \033[0m".format(e)) sys.exit()
方法二:pip.main()
# coding:utf-8 import os,sys, pip # 三方库 如果引用的库未安装,则自动安装 try:
# import lib # 导入需要添加的库名 import xlwt # 新建xls import xlrd # 读取xls from xlutils.copy import * # 修改xls except ImportError as ime: # posix:对应 linux,nt:对应 windows,java:对应 java 虚拟机 if os.name == 'posix': # posix:对应 linux print("导入模块失败,失败原因:{}".format(ime)) elif os.name == 'java': # java:对应 java 虚拟机 print("导入模块失败,失败原因:{}".format(ime)) elif os.name == 'nt': # nt:对应 windows # 方法1:使用pip.main()方法进行依赖库的安装(例举几个常用的库) # print("导入模块异常,尝试pip安装导入模块后重新导入") pip.main(["install", "--user", 'xlwt', "xlutils", "xlrd==1.2.0"]) # 增加需要添加的库名 # 获取执行文件路径及名称 exec_file = os.path.join(os.getcwd(), os.path.basename(sys.argv[0]).upper()) os.system("python " + exec_file)
优化版本_二选一:
# coding:utf-8 import os import pip import sys import time import importlib uselibs = ['xlwt', 'xlutils', 'xlrd==1.2.0', 'translate'] 需要增加需要的库名 # 三方库 如果引用的库未安装,则自动安装 try: for libname in uselibs: importlib.import_module(libname) except ImportError as ime: # 判断操作系统类型 posix:对应 linux,nt:对应 windows,java:对应 java 虚拟机 if os.name == 'posix': # posix:对应 linux print("导入模块失败,失败原因:{}".format(ime)) elif os.name == 'java': # java:对应 java 虚拟机 print("导入模块失败,失败原因:{}".format(ime)) elif os.name == 'nt': # nt:对应 windows print("导入模块异常,尝试安装异常模块,请稍后~") try: """方法1:遍历libs cmd安装""" # for lib in uselibs: # os.system("pip install " + lib) # print("\033[1;34m pip install {} success/already satisfied \033[0m".format(lib)) # 控制台带颜色打印 格式 /033[ # print("\033[1;34m \n全部安装成功,重新调用执行文件 \033[0m") """方法2:pip.main()安装""" uselib = ["install", "--user"] uselib.extend(uselibs) pip.main(uselib) print("\033[1;34m 全部安装成功,即将退出程序,请重新运行文件 \033[0m") sys.exit() except Exception as e: print("\033[1;34m 未全部安装成功,退出程序,异常原因:{} \033[0m".format(e)) sys.exit() # os.system("python " + exec_file)
-------------------------------------------------------------------------------------
如果万事开头难 那请结局一定圆满 @ Phoenixy
-------------------------------------------------------------------------------------
浙公网安备 33010602011771号