突然有一天要换新电脑了, pip list太多了,用py写个自动提取脚本来辅助迁移pip list
用py在新旧电脑快捷获取pip list安装pip list
用py的pysimpleGUI模块做一个可视化界面显示指令框内容,
点击选择迁出电脑或者迁入电脑,
如果是迁出电脑,提取pip list保存到指定路径下命名的txt文档中,
如果点击迁入电脑, 选择迁入,安装结束后显示“恭喜你已经全部迁移成功!”
话不多说,上代码
import PySimpleGUI as sg
import subprocess
import re
def extract_pip_list():
result = subprocess.run(['pip', 'list'], capture_output=True, text=True)
pip_list = result.stdout.strip().split('\n')
return pip_list
def filter_pip_names(pip_list):
filtered_pip_list = []
for item in pip_list:
name = re.match(r'([^\s]+)', item).group(1)
filtered_pip_list.append(name)
return filtered_pip_list
def save_to_file(pip_list, file_path):
with open(file_path, 'w') as f:
for item in pip_list:
f.write(item + '\n')
def install_pip_list(file_path):
with open(file_path, 'r') as f:
pip_list = f.read().splitlines()
for item in pip_list:
subprocess.run(['pip', 'install', item])
layout = [
[sg.Text('请选择操作:')],
[sg.Radio('迁出电脑', 'operation', default=True, key='-EXPORT-'), sg.Radio('迁入电脑', 'operation', key='-IMPORT-')],
[sg.Output(size=(50, 10), key='-OUTPUT-')],
[sg.Button('确定')]
]
window = sg.Window('迁移程序', layout)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
if event == '确定':
if values['-EXPORT-']:
save_file_path = sg.popup_get_file('选择保存文件的路径', save_as=True)
if save_file_path:
pip_list = extract_pip_list()
filtered_pip_list = filter_pip_names(pip_list)
save_to_file(filtered_pip_list, save_file_path)
sg.popup('保存成功!')
elif values['-IMPORT-']:
install_file_path = sg.popup_get_file('选择安装文件的路径')
if install_file_path:
install_pip_list(install_file_path)
sg.popup('恭喜你已经全部迁移成功!')
window.close()