Python之pip图形化(GUI界面)辅助管理工具
pip 是 Python 的包管理工具,用于安装、管理、更新和卸载 Python 包(模块)。用于第三方库的安装和管理过程,是 Python 开发中不可或缺的工具。
包的安装、更新、卸载,查看,特别是当用户安装有多个版本的Python时,为特定版本进行这些操作。还可以使用镜像加速安装。
默认情况下,pip 会从 PyPI 下载包。如果你在中国大陆,可能会因为网络问题导致下载速度较慢。可以设置使用国内的镜像源。
有关详情可见:https://blog.csdn.net/cnds123/article/details/104393385
对于新手而言,还是比较麻烦的。
为此,提供一个pip图形化(GUI界面)辅助管理工具
首先搜索出电脑上安装的python版本及路径放在列表中,用户点击哪个就列出哪个版本中已安装的包。所有耗时操作添加了操作前的提示信息,并在操作结束后显示明确的结果。
“列出python”按钮,提供计算机中安装所有python版本(含路径)
“安装包”按钮,提供对话框输入包名进行安装
“包卸载”按钮,可卸载选中的Python包
“包升级”按钮,可升级选中的Python包到最新版本
“镜像源”按钮,出现内置清华、阿里云、腾讯云和官方源等多个镜像源,用于选择
“刷新”按钮,用于列表中显示刚刚安装的包
为了便于用户使用,添加的帮助功能,使用 HTML 格式美化帮助内容。
运行效果如下:
这个工具,利用了多个模块/包/库:
sys(提供与 Python 解释器强相关的功能)、os(提供操作系统相关功能)、subprocess(用于运行外部命令或程序)、json(用于处理 JSON 数据)、shutil(提供文件和文件集合的高级操作)、datetime (用于处理日期和时间),这些都是 Python 的标准库,不需要安装。
PyQt6 是一个功能强大的 GUI 框架,适用于开发复杂的桌面应用程序。通过安装 PyQt6,你可以导入其中的模块来构建用户界面。
源码如下:
import sys
import os
import subprocess
import json
import shutil
from datetime import datetime
# PyQt6模块导入
from PyQt6.QtWidgets import (
QApplication, QMainWindow, QWidget, QPushButton, QVBoxLayout, QHBoxLayout,
QListWidget, QListWidgetItem, QLabel, QDialog, QFormLayout, QLineEdit,
QDialogButtonBox, QMessageBox, QTextEdit, QRadioButton, QButtonGroup,
QStatusBar, QSplitter, QTabWidget
)
from PyQt6.QtCore import Qt, QSize
from PyQt6.QtGui import QColor, QAction
class PipManager(QMainWindow):
"""PIP图形化管理工具主窗口类"""
def __init__(self):
super().__init__()
# 窗口基本设置
self.setWindowTitle('Python PIP图形化管理工具')
self.setGeometry(100, 100, 800, 600)
# 初始化成员变量
self.python_installations = [] # 存储Python安装信息
self.current_python = None # 当前选中的Python
self.installed_packages = [] # 当前Python已安装的包
self.current_mirror = None # 当前使用的镜像源
# 初始化镜像源配置
self.mirrors = {
"清华": "https://pypi.tuna.tsinghua.edu.cn/simple",
"阿里云": "https://mirrors.aliyun.com/pypi/simple",
"腾讯云": "https://mirrors.cloud.tencent.com/pypi/simple",
"官方源": "https://pypi.org/simple"
}
# 初始化UI
self.init_ui()
# 加载配置
self.load_config()
# 显示欢迎信息
self.info_text.setText("欢迎使用Python PIP图形化管理工具\n\n"
"请点击「列出Python」按钮扫描系统中的Python安装\n"
"或者直接选择上方列表中的Python版本开始管理")
# 加载Python安装列表
self.find_python_installations()
def init_ui(self):
"""初始化用户界面组件"""
# 创建主窗口部件
main_widget = QWidget()
self.setCentralWidget(main_widget)
# 创建菜单栏
self.init_menu_bar()
# 主布局
main_layout = QVBoxLayout()
main_widget.setLayout(main_layout)
# 上方部分 - Python版本列表
python_group = QWidget()
python_layout = QVBoxLayout()
python_group.setLayout(python_layout)
python_label = QLabel('已安装的Python列表')
python_layout.addWidget(python_label)
self.python_list = QListWidget()
self.python_list.setMinimumHeight(140) # 设置最小高度
self.python_list.setMaximumHeight(200) # 设置最大高度
self.python_list.itemClicked.connect(self.on_python_selected)
python_layout.addWidget(self.python_list)
main_layout.addWidget(python_group)
# 按钮工具栏
button_layout = QHBoxLayout()
self.list_python_btn = QPushButton('列出Python')
self.list_python_btn.clicked.connect(self.find_python_installations)
button_layout.addWidget(self.list_python_btn)
self.install_pkg_btn = QPushButton('安装包')
self.install_pkg_btn.clicked.connect(self.install_package)
button_layout.addWidget(self.install_pkg_btn)
self.uninstall_pkg_btn = QPushButton('卸载包')
self.uninstall_pkg_btn.clicked.connect(self.uninstall_package)
button_layout.addWidget(self.uninstall_pkg_btn)
self.upgrade_pkg_btn = QPushButton('升级包')
self.upgrade_pkg_btn.clicked.connect(self.upgrade_package)
button_layout.addWidget(self.upgrade_pkg_btn)
self.mirror_btn = QPushButton('设置镜像源')
self.mirror_btn.clicked.connect(self.show_mirror_dialog)
button_layout.addWidget(self.mirror_btn)
self.refresh_btn = QPushButton('刷新')
self.refresh_btn.clicked.connect(self.refresh_package_list)
button_layout.addWidget(self.refresh_btn)
# 添加帮助按钮
self.help_btn = QPushButton('帮助')
self.help_btn.clicked.connect(self.show_help)
button_layout.addWidget(self.help_btn)
main_layout.addLayout(button_layout)
# 下方分割区域:包列表和信息显示
splitter = QSplitter(Qt.Orientation.Horizontal)
# 左侧 - 已安装包列表
package_group = QWidget()
package_layout = QVBoxLayout()
package_group.setLa