前言
实际生产工作中需要维护较多的环境,或需要导出某个环境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
}