pip模块安装器.exe 链接: https://pan.baidu.com/s/1ZerRtJ85oQMHWfb_aviX-w?pwd=cxm1 提取码: cxm1 Python 3.9 (64-bit) 环境 免费需要自取 违规请删除 模块, 链接
jzfxly 发表于 2025-1-16 10:29 每次安装模块成功为什么总弹出一个主窗口? import subprocess import sys import tkinter as tk from tkinter import messagebox, Listbox, END, Scrollbar # 要安装的模块列表 modules = [ 'numpy', 'pandas', 'matplotlib', 'scikit-learn' ] def log_error(message): """记录错误信息到日志文件""" with open("install_log.txt", "a") as log_file: log_file.write(message + "\n") def set_pip_source(source): """设置 pip 的源""" try: subprocess.check_call([sys.executable, '-m', 'pip', 'config', 'set', 'global.index-url', source]) messagebox.showinfo("成功", f"pip 源已设置为 {source}!") except Exception as e: log_error(f"设置 pip 源失败: {e}") messagebox.showerror("失败", f"设置 pip 源失败: {e}") def install(module): """安装指定的模块""" try: subprocess.check_call([sys.executable, '-m', 'pip', 'install', module]) messagebox.showinfo("成功", f"{module} 安装成功!") except subprocess.CalledProcessError as e: log_error(f"安装 {module} 失败: {e}") if messagebox.askyesno("安装失败", f"安装 {module} 失败: {e}\n是否重试?"): install(module) # 重试安装 except Exception as e: log_error(f"安装 {module} 失败: {e}") messagebox.showerror("失败", f"安装 {module} 失败: {e}") def install_all(): """安装所有模块""" for module in modules: install(module) def install_selected(): """安装选中的模块""" selected_module = module_listbox.curselection() if selected_module: module = module_listbox.get(selected_module) install(module) else: messagebox.showwarning("警告", "请先选择一个模块!") def add_module(): """添加用户输入的模块""" module = module_entry.get().strip() if module and module not in modules: modules.append(module) module_entry.delete(0, tk.END) update_module_list() messagebox.showinfo("成功", f"模块 {module} 已添加!") else: messagebox.showwarning("警告", "模块已存在或输入为空!") def remove_module(): """删除选中的模块""" selected_module = module_listbox.curselection() if selected_module: module = module_listbox.get(selected_module) modules.remove(module) update_module_list() messagebox.showinfo("成功", f"模块 {module} 已删除!") else: messagebox.showwarning("警告", "请先选择一个模块!") def update_module_list(): """更新模块列表框""" module_listbox.delete(0, END) for module in modules: module_listbox.insert(END, module) def open_source_window(): """打开换源窗口""" source_window = tk.Toplevel(root) source_window.title("设置 pip 源") source_window.geometry("400x300") # 设置窗口大小 tk.Label(source_window, text="选择或输入 pip 源:", font=("Arial", 12)).pack(pady=10) # 源选项 sources = { "清华大学": "https://pypi.tuna.tsinghua.edu.cn/simple", "阿里云": "https://mirrors.aliyun.com/pypi/simple", "官方": "https://pypi.python.org/simple" } for name, url in sources.items(): button = tk.Button(source_window, text=name, command=lambda u=url: set_pip_source(u), width=30) button.pack(pady=5) # 自定义源输入框 custom_source_entry = tk.Entry(source_window, width=50) custom_source_entry.pack(pady=10) custom_source_button = tk.Button(source_window, text="设置自定义源", command=lambda: set_pip_source(custom_source_entry.get()), width=30) custom_source_button.pack(pady=5) # 创建主窗口 root = tk.Tk() root.title("免费- PIP 模块安装器") # 修改标题 root.geometry("600x600") # 设置窗口大小为更大 # 创建主框架 main_frame = tk.Frame(root, padx=10, pady=10) main_frame.pack(expand=True, fill=tk.BOTH) # 使主框架自动扩展 # 添加标题标签 title_label = tk.Label(main_frame, text="PIP 模块安装器", font=("Arial", 16, "bold")) title_label.pack(pady=10) # 创建安装所有模块按钮 install_button = tk.Button(main_frame, text="安装所有模块", command=install_all, width=30) install_button.pack(pady=10) # 创建输入框和按钮以添加模块 module_entry = tk.Entry(main_frame, width=40) module_entry.pack(pady=10) add_button = tk.Button(main_frame, text="添加模块", command=add_module, width=30) add_button.pack(pady=5) # 创建模块列表框和滚动条 list_frame = tk.Frame(main_frame) # 创建一个框架来放置列表框和滚动条 list_frame.pack(expand=True, fill=tk.BOTH, pady=10) module_listbox = Listbox(list_frame, width=60, height=15) # 增加列表框的宽度和高度 module_listbox.pack(side=tk.LEFT, expand=True, fill=tk.BOTH) # 使列表框自动扩展 scrollbar = Scrollbar(list_frame) # 创建滚动条 scrollbar.pack(side=tk.RIGHT, fill=tk.Y) # 使滚动条垂直填充 module_listbox.config(yscrollcommand=scrollbar.set) # 将滚动条与列表框连接 scrollbar.config(command=module_listbox.yview) # 将列表框与滚动条连接 remove_button = tk.Button(main_frame, text="删除选中模块", command=remove_module, width=30) remove_button.pack(pady=5) # 创建单独安装模块按钮 install_selected_button = tk.Button(main_frame, text="安装选中模块", command=install_selected, width=30) install_selected_button.pack(pady=5) # 创建换源按钮 source_button = tk.Button(main_frame, text="设置 pip 源", command=open_source_window, width=30) source_button.pack(pady=10) # 初始化模块列表框 update_module_list() # 运行主循环 root.mainloop()
[Python] 纯文本查看 复制代码import subprocess import sys import tkinter as tk from tkinter import messagebox, Listbox, END, Scrollbar # 要安装的模块列表 modules = [ 'numpy', 'pandas', 'matplotlib', 'scikit-learn' ] def log_error(message): """记录错误信息到日志文件""" with open("install_log.txt", "a") as log_file: log_file.write(message + "\n") def set_pip_source(source): """设置 pip 的源""" try: subprocess.check_call([sys.executable, '-m', 'pip', 'config', 'set', 'global.index-url', source]) messagebox.showinfo("成功", f"pip 源已设置为 {source}!") except Exception as e: log_error(f"设置 pip 源失败: {e}") messagebox.showerror("失败", f"设置 pip 源失败: {e}") def install(module): """安装指定的模块""" try: subprocess.check_call([sys.executable, '-m', 'pip', 'install', module]) messagebox.showinfo("成功", f"{module} 安装成功!") except subprocess.CalledProcessError as e: log_error(f"安装 {module} 失败: {e}") if messagebox.askyesno("安装失败", f"安装 {module} 失败: {e}\n是否重试?"): install(module) # 重试安装 except Exception as e: log_error(f"安装 {module} 失败: {e}") messagebox.showerror("失败", f"安装 {module} 失败: {e}") def install_all(): """安装所有模块""" for module in modules: install(module) def install_selected(): """安装选中的模块""" selected_module = module_listbox.curselection() if selected_module: module = module_listbox.get(selected_module) install(module) else: messagebox.showwarning("警告", "请先选择一个模块!") def add_module(): """添加用户输入的模块""" module = module_entry.get().strip() if module and module not in modules: modules.append(module) module_entry.delete(0, tk.END) update_module_list() messagebox.showinfo("成功", f"模块 {module} 已添加!") else: messagebox.showwarning("警告", "模块已存在或输入为空!") def remove_module(): """删除选中的模块""" selected_module = module_listbox.curselection() if selected_module: module = module_listbox.get(selected_module) modules.remove(module) update_module_list() messagebox.showinfo("成功", f"模块 {module} 已删除!") else: messagebox.showwarning("警告", "请先选择一个模块!") def update_module_list(): """更新模块列表框""" module_listbox.delete(0, END) for module in modules: module_listbox.insert(END, module) def open_source_window(): """打开换源窗口""" source_window = tk.Toplevel(root) source_window.title("设置 pip 源") source_window.geometry("400x300") # 设置窗口大小 tk.Label(source_window, text="选择或输入 pip 源:", font=("Arial", 12)).pack(pady=10) # 源选项 sources = { "清华大学": "https://pypi.tuna.tsinghua.edu.cn/simple", "阿里云": "https://mirrors.aliyun.com/pypi/simple", "官方": "https://pypi.python.org/simple" } for name, url in sources.items(): button = tk.Button(source_window, text=name, command=lambda u=url: set_pip_source(u), width=30) button.pack(pady=5) # 自定义源输入框 custom_source_entry = tk.Entry(source_window, width=50) custom_source_entry.pack(pady=10) custom_source_button = tk.Button(source_window, text="设置自定义源", command=lambda: set_pip_source(custom_source_entry.get()), width=30) custom_source_button.pack(pady=5) # 创建主窗口 root = tk.Tk() root.title("免费- PIP 模块安装器") # 修改标题 root.geometry("600x600") # 设置窗口大小为更大 # 创建主框架 main_frame = tk.Frame(root, padx=10, pady=10) main_frame.pack(expand=True, fill=tk.BOTH) # 使主框架自动扩展 # 添加标题标签 title_label = tk.Label(main_frame, text="PIP 模块安装器", font=("Arial", 16, "bold")) title_label.pack(pady=10) # 创建安装所有模块按钮 install_button = tk.Button(main_frame, text="安装所有模块", command=install_all, width=30) install_button.pack(pady=10) # 创建输入框和按钮以添加模块 module_entry = tk.Entry(main_frame, width=40) module_entry.pack(pady=10) add_button = tk.Button(main_frame, text="添加模块", command=add_module, width=30) add_button.pack(pady=5) # 创建模块列表框和滚动条 list_frame = tk.Frame(main_frame) # 创建一个框架来放置列表框和滚动条 list_frame.pack(expand=True, fill=tk.BOTH, pady=10) module_listbox = Listbox(list_frame, width=60, height=15) # 增加列表框的宽度和高度 module_listbox.pack(side=tk.LEFT, expand=True, fill=tk.BOTH) # 使列表框自动扩展 scrollbar = Scrollbar(list_frame) # 创建滚动条 scrollbar.pack(side=tk.RIGHT, fill=tk.Y) # 使滚动条垂直填充 module_listbox.config(yscrollcommand=scrollbar.set) # 将滚动条与列表框连接 scrollbar.config(command=module_listbox.yview) # 将列表框与滚动条连接 remove_button = tk.Button(main_frame, text="删除选中模块", command=remove_module, width=30) remove_button.pack(pady=5) # 创建单独安装模块按钮 install_selected_button = tk.Button(main_frame, text="安装选中模块", command=install_selected, width=30) install_selected_button.pack(pady=5) # 创建换源按钮 source_button = tk.Button(main_frame, text="设置 pip 源", command=open_source_window, width=30) source_button.pack(pady=10) # 初始化模块列表框 update_module_list() # 运行主循环 root.mainloop()