pip模块安装器

查看 95|回复 9
作者:kkpo010   
pip模块安装器.exe
链接: https://pan.baidu.com/s/1ZerRtJ85oQMHWfb_aviX-w?pwd=cxm1 提取码: cxm1
Python 3.9 (64-bit) 环境
免费需要自取
违规请删除

模块, 链接

yctx2050   

楼主,Python 3.8.10 (64-bit) 环境 使用的有吗?
li9989   

工具很实用,如果能自己配置pip源就好了
halou   

感谢分享!
flylujun   

不用写命令行了,就是下载速度怎么样
kkpo010
OP
  


li9989 发表于 2025-1-16 08:53
工具很实用,如果能自己配置pip源就好了

可以自己配啊..滚动下滑
kkpo010
OP
  


yctx2050 发表于 2025-1-15 14:11
楼主,Python 3.8.10 (64-bit) 环境 使用的有吗?

打包环境是在3.9  (64-bit) 其他没试过
jzfxly   

每次安装模块成功为什么总弹出一个主窗口?
kkpo010
OP
  


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()
kkpo010
OP
  

[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()
您需要登录后才可以回帖 登录 | 立即注册

返回顶部