1. 程式人生 > 實用技巧 >python第三方庫批量安裝指令碼

python第三方庫批量安裝指令碼

有時我們需要一次安裝多個第三方庫,單個操作比較繁瑣,可通過此指令碼安裝想要的庫。

注意:需要安裝第三方庫的名稱請儲存在檔案LibName.csv中。

可分組進行安裝,LibName.csv檔案中每行代表一組。

完整程式碼如下:

def main():
    path = 'LibName.csv'
    printInform()
    items = getItems(path)
    dic = InstallLibs(items)
    printSummary(dic)

def printInform():
    s = '''     歡迎使用Python第三方庫批量安裝指令碼
需要安裝第三方庫的名稱請儲存在檔案LibName.csv中
回車開始安裝'''
    print(s)
    input()
   

def getItems(path):
    fo = open(path)
    ls = []
    print('')
    for line in fo:
        print(line)
        line = line.replace('\n','')
        ls.append(line.split(','))
    fo.close()
    print('')
    return ls

def InstallLibs(items):
    import time
    num = 0
    lts = []; lfs = [];
    dic = {}
    for row in items:
        print("開始安裝。。。。。。\n")
        for column in row:
            start = time.perf_counter()
            for i in range(3):
                print("\n")
            if InstallLib(column):
                lts.append(column)
                lstatus = '成功'
            else:
                lfs.append(column) 
                lstatus = '失敗'
            print("{}安裝完成。。。\n".format(column))
            end = time.perf_counter()
            ltime = end - start
            dic[column] = [ltime,lstatus]
        print("{}安裝成功".format(','.join(lts)))
        if lfs != []:
            print("{}安裝失敗".format(','.join(lfs)))
        num = num+1
        print('第{}組安裝完成\n'.format(num))
        print("回車繼續安裝下一組")
        input()
        lts = []; lfs = []
    return dic

def InstallLib(item):
    from os import system
    try:
        system("pip install " + item)
        return True
    except:
        return False
   
def printSummary(dic):
    print("所有庫均已安裝完成,以下為安裝詳細資訊:")
    s = "\t{:<25}{:>7}s{:^15}".format("Name","Time","  Status")
    lt = "\t{:<25}{:>7.2f}s{:^15}"
    print(s)
    for key in dic.keys():
        print(lt.format(key,dic[key][0],dic[key][1]))
        s += '\n' + lt.format(key,dic[key][0],dic[key][1])
    for i in range(5):
        print("\t\t.\t\t.")
    try:
        saveFile(s)
    except:
        print("日誌檔案儲存失敗")
    input("\n按回車退出程式 . . . \n")

def saveFile(s):
    import time
    import os
    root = ".//日誌//"
    path = root + "PythonLibInstall" + time.strftime("%Y%m%d_%H%M%S.log")
    if not os.path.exists(root):
        os.mkdir(root)
    with open(path,'w') as f:
        f.write(s)
        f.close()
        print("日誌檔案儲存成功")

main()