Python 实现pip环境管理 Python执行CMD命令 Python获取pip list环境所有的包信息 包列表 包数量 包管理 pip list信息导出 pip包管理 pip管理

前言

    实际生产工作中需要维护较多的环境,或需要导出某个环境requirement.txt依赖信息,当然方法和方式是多种多样的,本文列举Python执行cmd命令实现pip包管理,实现CRUD的基础功能,后期可根据实际需求可封装为Http接口去调用实现。仅供参考

1、Python 实现pip包管理 示例代码

#!/usr/bin/env python
# -*- coding=utf-8 -*-
__author__ = 'Benjamin'
__CreateAt__ = '2023/4/24-20:24'


import subprocess

# 执行cmd命令并返回字符串
def do_cmd(adbshell):
    try:
        return str(subprocess.Popen(adbshell, shell=True, stdout=subprocess.PIPE).communicate())
    except Exception as e:
        print(e)
        return None

# 解析 pip list
def get_pip_package(shell_result):

    pip_package_all_info = {}

    pip_package_list = []
    pip_package_info = {}
    shell_result_split = shell_result.split("\\r\\n")

    for i in shell_result_split:
        if " " in i and "." in i and "b'" not in i and "notice" not in i and "--" not in i and "'" not in i and '"' not in i:
            c = i.replace(" ","$").split("$")
            pip_package_info[c[0]] = c[-1]
            pip_package_list.append(c[0])

    pip_package_all_info["pip_package_info"] = pip_package_info
    pip_package_list.sort()
    pip_package_all_info["pip_package_list"] = pip_package_list
    pip_package_all_info["pip_package_len"] = len(pip_package_list)

    return pip_package_all_info

def do_cmd_upgrade(package):
    adbshell = "pip3 install -i https://pypi.douban.com/simple/ --upgrade {}".format(package)
    return do_cmd(adbshell)

def do_cmd_install(package):
    adbshell = "pip3 install -i https://pypi.douban.com/simple/ {}".format(package)
    return do_cmd(adbshell)

def do_cmd_uninstall(package):
    adbshell = "pip3 uninstall {} -y".format(package)
    return do_cmd(adbshell)

def get_pip_package_info():
    pip_package_all_info = get_pip_package(do_cmd("pip3 list"))
    return pip_package_all_info

def get_pip_someone_package(package):
    adbshell = "pip show --files {}".format(package)
    result = do_cmd(adbshell)
    if "Version" in result:
        result = result.split("\\r\\n")[1]
        return result
    else:
        return None


if __name__ == "__main__":
    package =  "requests"
    print(get_pip_someone_package(package))
    print(get_pip_package_info())


可根据自身业务需求再封装为http api接口实现参数调用和控制,也可实现单接口多机远程云端调用执行。

2、示例数据 截图展示

3、示例数据 展示

{
	"pip_package_info": {
		"certifi": "2022.12.7",
		"charset-normalizer": "2.1.1",
		"DateTime": "4.3",
		"gevent": "21.8.0",
		"idna": "3.4",
		"JPype1": "1.3.0",
		"pip": "22.3",
		"PyYAML": "6.0",
		"requests": "2.28.1",
		"setuptools": "63.2.0",
		"urllib3": "1.26.7",
		"virtualenv": "20.10.0",
		"web.py": "0.62"
	},
	"pip_package_list": [
		"DateTime",
		"JPype1",
		"PyYAML",
		"certifi",
		"charset-normalizer",
		"gevent",
		"idna",
		"pip",
		"requests",
		"setuptools",
		"urllib3",
		"virtualenv",
		"web.py"
	],
	"pip_package_len": 13
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BenjaminQA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值