iT邦幫忙

1

【Python小工具】更新所安裝的套件

  • 分享至 

  • xImage
  •  

如果要更新pip所安裝的全部套件,可以使用下列程式碼:
pip_upgrade_all.py程式碼

"""
程式名稱:pip_upgrade_all.py
"""
import ctypes
import os
import sys
import subprocess 

"""
!!!不適用的方式!!!
pkg_resources在python 3.12後已不再支援,
在3.11後期版本會顯示:
1: DeprecationWarning: pkg_resources is deprecated as an API. 
See https://setuptools.pypa.io/en/latest/pkg_resources.html
  
"""

def is_admin() -> bool:
    return ctypes.windll.shell32.IsUserAnAdmin()
          
if is_admin():    
    installed_packages_text = subprocess.check_output(['pip', 'freeze'], universal_newlines=True)
    installed_packages = [line.split('==')[0] for line in installed_packages_text.split('\n') if line.strip()]

    subprocess.call("pip install  --upgrade " + ' '.join(installed_packages), shell=True)
else:
    print('需運作在系統管理員模式中')

說明:
1.之前是使用pkg_resources函式庫處理,不過在之後版本已經不支援。
2.操作在系統管理員模式下主要是讓安裝的套件能安裝在python目錄本身的site-package中。
3.網站找很多方式,但多太複雜。故使用最原始的pip freeze指令,但缺點是執行時似乎有2~3秒的等待時間。不過程式自動化嘛~讓它跑就是了。
4.此程式的想法是,原pkg_resources輸出什麼,用installed_packages = ...替代產生相同輸出。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言