分享一个自己写的很有用的python脚本,用于查看python所有包名称和大小的

import subprocess
import os

def get_installed_packages():
    # 获取所有安装的包
    result = subprocess.run(['pip', 'list'], stdout=subprocess.PIPE, text=True, errors='ignore')
    lines = result.stdout.split('\n')
    packages = []
    for line in lines[2:]:  # 跳过前两行表头
        if line:
            packages.append(line.split()[0])
    return packages

def get_package_size(package_name):
    # 获取包的安装位置
    result = subprocess.run(['pip', 'show', package_name], stdout=subprocess.PIPE, text=True, errors='ignore')
    lines = result.stdout.split('\n')
    for line in lines:
        if line.startswith('Location:'):
            location = line.split(' ', 1)[1]
            package_path = os.path.join(location, package_name)
            # 计算包的大小
            total_size = 0
            for dirpath, dirnames, filenames in os.walk(package_path):
                for f in filenames:
                    fp = os.path.join(dirpath, f)
                    total_size += os.path.getsize(fp)
            return total_size
    return None

if __name__ == '__main__':
    packages = get_installed_packages()
    for package in packages:
        size = get_package_size(package)
        if size is not None:
            print(f"Package: {package}, Size: {size / (1024 * 1024):.2f} MB")
        else:
            print(f"Package: {package}, Size: Not found")

运行过后会出现然后就可以自己看看需要卸载哪些不用的,但是很大的那些包

还可以排序输出最大的10个包名称和大小

import subprocess
import os

def get_installed_packages():
    # 获取所有安装的包
    result = subprocess.run(['pip', 'list'], stdout=subprocess.PIPE, text=True, errors='ignore')
    lines = result.stdout.split('\n')
    packages = []
    for line in lines[2:]:  # 跳过前两行表头
        if line:
            packages.append(line.split()[0])
    return packages

def get_package_size(package_name):
    # 获取包的安装位置
    result = subprocess.run(['pip', 'show', package_name], stdout=subprocess.PIPE, text=True, errors='ignore')
    lines = result.stdout.split('\n')
    for line in lines:
        if line.startswith('Location:'):
            location = line.split(' ', 1)[1]
            package_path = os.path.join(location, package_name)
            # 计算包的大小
            total_size = 0
            for dirpath, dirnames, filenames in os.walk(package_path):
                for f in filenames:
                    fp = os.path.join(dirpath, f)
                    total_size += os.path.getsize(fp)
            return total_size
    return None

if __name__ == '__main__':
    packages = get_installed_packages()
    package_sizes = []

    for package in packages:
        size = get_package_size(package)
        if size is not None:
            package_sizes.append((package, size))

    # 按大小排序并取前10个
    package_sizes.sort(key=lambda x: x[1], reverse=True)
    top_packages = package_sizes[:10]

    for package, size in top_packages:
        print(f"Package: {package}, Size: {size / (1024 * 1024):.2f} MB")

  • 21
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值