如果要更新pip所安装的全部套件,可以使用下列程式码:
pip_upgrade_all.py程式码
"""程式名称:pip_upgrade_all.py"""import ctypesimport osimport sysimport 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 = ...
替代产生相同输出。