吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2303|回复: 11
收起左侧

[Python 原创] Pip源配置工具

[复制链接]
知心 发表于 2025-2-27 22:02
最近看到很多用AI辅助编程的文章,正好重装系统以后需要重新配置python环境,就想着是不是可以写一个pip源配置工具。

源码:
[Python] 纯文本查看 复制代码
import os
import tkinter as tk
from tkinter import ttk
from datetime import datetime

class PipConfigTool:
    def __init__(self, root):
        self.root = root
        self.root.title("pip源配置工具")
        
        # 获取APPDATA路径
        self.appdata_path = os.getenv('APPDATA')
        self.pip_folder = os.path.join(self.appdata_path, 'pip')
        self.pip_ini_path = os.path.join(self.pip_folder, 'pip.ini')
        
        # 创建UI组件
        self.create_widgets()
        
        # 检查并创建必要的文件夹和文件
        if not os.path.exists(self.pip_folder):
            os.makedirs(self.pip_folder)
            self.log_message("pip文件夹创建成功")
        if not os.path.exists(self.pip_ini_path):
            open(self.pip_ini_path, 'w').close()
            self.log_message("pip.ini创建成功")
        
        # 加载pip.ini内容
        self.load_config()

    def load_config(self):
        default_config="[global]\ntimeout = 6000\nindex-url = [url]https://mirrors.aliyun.com/pypi/simple/[/url]\ntrusted-host = mirrors.aliyun.com"
        try:
            with open(self.pip_ini_path, 'r') as file:
                config_content = file.read().strip()
            if len(config_content) == 0:
                config_content = default_config
                self.log_message("配置文件为空,已加载默认配置")
        except Exception as e:
            config_content = default_config
            self.log_message("读取配置文件失败,已加载默认配置")
        self.config_text.delete(1.0, tk.END)
        self.config_text.insert(tk.END, config_content)

    def save_config(self):
        new_content = self.config_text.get(1.0, tk.END).strip()
        with open(self.pip_ini_path, 'w') as file:
            file.write(new_content)
        self.log_message(f"配置文件保存成功")

    def log_message(self, message):
        timestamp = datetime.now().strftime("%Y-%m-%d %H:%M")
        full_message = f"{timestamp} {message}"
        self.log_text.configure(state='normal')
        self.log_text.insert(tk.END, full_message + "\n")
        self.log_text.see(tk.END)  # 自动滚动到底部
        self.log_text.configure(state='disabled')

    def create_widgets(self):
        frame = ttk.Frame(self.root, padding="10")
        frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
        
        # 配置文本框
        self.config_text = tk.Text(frame, wrap=tk.NONE, height=15, width=60)
        self.config_text.grid(row=0, column=0, padx=5, pady=5, sticky=(tk.W, tk.E, tk.N, tk.S))
        
        scrollbar_y = ttk.Scrollbar(frame, orient=tk.VERTICAL, command=self.config_text.yview)
        scrollbar_x = ttk.Scrollbar(frame, orient=tk.HORIZONTAL, command=self.config_text.xview)
        self.config_text['yscrollcommand'] = scrollbar_y.set
        self.config_text['xscrollcommand'] = scrollbar_x.set
        
        scrollbar_y.grid(row=0, column=1, sticky=(tk.N, tk.S))
        scrollbar_x.grid(row=1, column=0, sticky=(tk.W, tk.E))
        
        # 配置字段说明区

        description_text = """配置文件位置:%APPDATA%\\pip\\pip.ini\n\nglobal:全局配置\ntimeout:连接超时时间(秒)\nindex-url:镜像源\ntrusted-host:受信任的主机"""
        description_box = tk.Text(frame, wrap=tk.WORD, height=6, width=60)
        description_box.insert(tk.END, description_text)
        description_box.configure(state='disabled')
        description_box.grid(row=2, column=0, padx=5, pady=5, sticky=(tk.W, tk.E, tk.N, tk.S))
        
        # 日志文本框
        self.log_text = tk.Text(frame, wrap=tk.NONE, height=10, width=60, state='disabled')
        self.log_text.grid(row=3, column=0, padx=5, pady=5, sticky=(tk.W, tk.E, tk.N, tk.S))
        
        scrollbar_log_y = ttk.Scrollbar(frame, orient=tk.VERTICAL, command=self.log_text.yview)
        scrollbar_log_x = ttk.Scrollbar(frame, orient=tk.HORIZONTAL, command=self.log_text.xview)
        self.log_text['yscrollcommand'] = scrollbar_log_y.set
        self.log_text['xscrollcommand'] = scrollbar_log_x.set
        
        scrollbar_log_y.grid(row=3, column=1, sticky=(tk.N, tk.S))
        scrollbar_log_x.grid(row=4, column=0, sticky=(tk.W, tk.E))
        
        # 保存按钮
        save_button = ttk.Button(frame, text="保存", command=self.save_config)
        save_button.grid(row=5, column=0, pady=10)
        
        for child in frame.winfo_children():
            child.grid_configure(padx=5, pady=5)

if __name__ == "__main__":
    root = tk.Tk()
    app = PipConfigTool(root)
    root.mainloop()


首版提示词
[Plain Text] 纯文本查看 复制代码
>代码模式:请帮我编写一个python程序,GUI用tkinter实现。
UI部分:一个编辑框用户编辑配置文件,一个文本框用于显示配置项说明,一个只读编辑框显示操作日志,一个按钮用于保存配置
程序逻辑:1. 读取环境变量%APPDATA% 2.检查%APPDATA%/pip目录是否存在,不存在则创建 3. 检查%APPDATA%/pip/pip.ini文件是否存在,不存在则创建 4. 读取pip.ini,文件为空则加载默认配置"[global]\ntimeout = 6000\nindex-url = [url]https://mirrors.aliyun.com/pypi/simple/[/url]\ntrusted-host = mirrors.aliyun.com" 5. 点击保存按钮,保存文件


然后根据根据返回结果引导微调


运行截图:
微信截图_20250227205105.png

免费评分

参与人数 5吾爱币 +7 热心值 +4 收起 理由
sea8523 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
vethenc + 1 + 1 谢谢@Thanks!
yaan + 1 + 1 热心回复!
一场荒唐半生梦 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

heyxiaoniu 发表于 2025-2-28 12:45
del /f /s /q "%userprofile%\pip\pip.ini" & md %userprofile%\pip & echo [global]>>"%userprofile%\pip\pip.ini" & echo index-url = https://mirrors.cloud.tencent.com/pypi/simple>>"%userprofile%\pip\pip.ini" & echo trusted-host = mirrors.cloud.tencent.com>>"%userprofile%\pip\pip.ini" & echo timeout = 60>>"%userprofile%\pip\pip.ini"
wsasecy 发表于 2025-2-28 10:04
manglang 发表于 2025-2-28 09:21
一行不够,有时候还要检查“可信任服务器”。

在功能上,他这一行和楼主的一长篇可以说是没区别的(楼主也只是检查本地pip源)。
6767 发表于 2025-2-27 23:17
[Shell] 纯文本查看 复制代码
pip config set global.index-url [url]https://pypi.tuna.tsinghua.edu.cn/simple[/url]


命令行一行就够了鸭
一场荒唐半生梦 发表于 2025-2-27 22:16
楼主有打包的吗
liubai600 发表于 2025-2-27 22:44
学习学习  确实很实用。
 楼主| 知心 发表于 2025-2-27 23:03

不安装python的话这个没啥用,安装了python直接运行就行,没用三方库。所以没打包
manglang 发表于 2025-2-28 09:21
6767 发表于 2025-2-27 23:17
[mw_shl_code=shell,true]pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
[/ ...

一行不够,有时候还要检查“可信任服务器”。
manglang 发表于 2025-2-28 09:23
你锁定阿里云了,我这儿用中科大服务器速度最快。
huxiang1990 发表于 2025-2-28 17:04
厉害,对我帮助太大了,谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-9-5 11:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表