ARtcgb 发表于 2021-7-18 13:46

【Python】Better_pip3 pip3功能增强脚本

# Better_pip3

pip3功能集合脚本,适用于 Linux/macOS 以及 Windows(尚未测试)

## 环境需求
Python3(仅使用官方库)
Linux/macOS 使用效果最佳
Windows 暂未测试

## 项目地址
(https://github.com/ARtcgb/Better_pip3)
喜欢的帮忙点个Star,谢谢啦

## 功能

自动设置 pip3 源

一键更新 pip3 过期的第三方库

更新 pip3

重设 pip3 源

## 使用方法

1、终端输入 `git clone https://github.com/ARtcgb/Better_pip3.git`至本地并 `cd Better_pip3`进入仓库

2、 终端执行 `python3 main.py`直接进入主程序,或通过`python3 main.py [参数]`形式快捷进行操作。 进入主程序后会自动检测 pip3 是否换源,为官方源的可自动切换至清华源。

### 参数菜单

形式:python3 main.py [参数]

```
-help 在终端中快速查看参数菜单
-update or -u 更新所有有新版本的库
-update_pip3 or -U 更新pip3
-unset or -un 重新设置pip3配置文件,未自行配置的只会影响pip3源,重设后为官方源
```

## 完整源码
```
import getpass
import os
import sys

"""
Project Name: better_pip
Author: ARtcgb
Email:artcgb@ebay.onmicrosoft.com
Date: 2021/7/16
"""

try:
    def configuration_pip3_conf():
      """
      检测 + 配置pip源
      """
      system = sys.platform
      unix_list = ["darwin", "linux2", "Linux"]
      if system in unix_list:
            print(os.popen("mkdir ~/.pip"))
            with open("./pip.conf", "w+", encoding="utf-8") as pipfile:
                pipfile.write("""
            index-url = https://pypi.tuna.tsinghua.edu.cn/simple
            
            trusted-host = https://pypi.tuna.tsinghua.edu.cn""")
            print(os.popen("mv pip.conf ~/.pip/pip.conf"))
      else:
            print(os.popen("mkdir C:\\Users\\" + getpass.getuser() + "\\pip"))
            with open("C:\\Users\\" + getpass.getuser() + "\\pip\\pip.ini", "w+", encoding="utf-8") as pipfile:
                pipfile.write("""
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
   
    trusted-host = https://pypi.tuna.tsinghua.edu.cn""")
            print(os.popen("mv pip.ini C:\\Users\\" + getpass.getuser() + "\\pip"))
      print("配置完毕")


    def update_pip3():
      """
      更新pip3,python不存在版本冲突的话可以直接使用,否则将 python3 改为要更新版本的路径
      """
      print(os.popen("python3 -m install --upgrade pip").read())
      print("pip更新完成")


    def update_pip3_package():
      """
      检测并更新过期资源包
      """
      outdated_package_list = []
      for line in os.popen("pip3 list --outdated"):
            package = line.split()
            outdated_package_list.append(package)
      # 删除列表前两项(Python 中的无用表头及分割线)
      del outdated_package_list

      for outdated_package in outdated_package_list:
            print("updating:", outdated_package)
            print(os.popen("pip3 install " + outdated_package + " -U").read())
      print("更新完毕")


    def unset_pip3_conf():
      """
      重设pip3 配置文件
      """
      system = sys.platform
      unix_list = ["darwin", "linux2", "Linux"]
      if system in unix_list:
            print(os.popen("sudo rm ~/.pip/pip.conf"))
            print("重设完成")
      else:
            print(os.popen("del C:\\Users\\" + getpass.getuser() + "\\pip\\pip.ini"))
            print("重设完成")


    def main():
      print("欢迎!", getpass.getuser())
      print("Welcome! ", getpass.getuser())
      if os.popen("pip3 config list") == "":
            choice = input("检测到没有配置pip源,是否配置pip国内源?(y/n)")
            if choice == "y":
                configuration_pip3_conf()
                print('pip3源已设置完毕')
      while True:
            print("操作目录:1、重新配置pip3源 2、更新pip3 3、更新所有有新版本的第三方库 4、撤销pip3源(pip3 install 连续出现错误时选此项) exit 退出程序")
            choice = input("请输入要进行的操作:")
            if choice == "1":
                configuration_pip3_conf()
            elif choice == "2":
                update_pip3()
            elif choice == "3":
                update_pip3_package()
            elif choice == "4":
                unset_pip3_conf()
            elif choice == "exit":
                print("\nByebye")
                break

    if __name__ == '__main__':
      try:
            if sys.argv == "-update" or sys.argv == "-u":
                update_pip3_package()
            elif sys.argv == "-update_pip3" or sys.argv == "-U":
                update_pip3()
            elif sys.argv == "-unset" or sys.argv == "-un":
                unset_pip3_conf()
            elif sys.argv == "-help":
                print('''-help 在终端中快速查看参数菜单
-update or -u 更新所有有新版本的库
-update_pip3 or -U 更新pip3
-unset or -un 重新设置pip3配置文件,未自行配置的只会影响pip3源,重设后为官方源''')
            else:
                main()
      except IndexError:
            main()
except KeyboardInterrupt:
    print("\nByebye")
```

cosers 发表于 2021-7-18 13:55

当作备用源,省得有时官方源更新不了
页: [1]
查看完整版本: 【Python】Better_pip3 pip3功能增强脚本