需求:在 Windows 环境中通过可视化界面编辑位于 Linux 主机上的 env 文件的情况,我现在环境是windows环境,我的env文件在linux的192.168.20.124上,用户是op,密码是op,文件绝对路径是/home/op/compose/env
import tkinter as tk
from tkinter import messagebox, ttk
import paramikodef save_changes():new_values = [f"{key}={value.get()}" for key, value in entries.items()]new_content = '\n'.join(new_values)try:# Create a SSH clientssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname, username=username, password=password)# Write new content to the remote filewith ssh.open_sftp().file(remote_env_file_path, 'w') as f:f.write(new_content)ssh.close()messagebox.showinfo('Success', 'Changes saved!')except Exception as e:messagebox.showerror('Error', f'An error occurred: {str(e)}')hostname = "192.168.20.124"
username = "op"
password = "op"
remote_env_file_path = "/home/op/compose/env"# Load existing key-value pairs from remote env file
entries = {}
try:ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname, username=username, password=password)with ssh.open_sftp().file(remote_env_file_path, 'r') as f:for line in f:key, value = line.strip().split('=', 1)entries[key] = valuessh.close()
except Exception as e:print(f'An error occurred: {str(e)}')# Create GUI window
window = tk.Tk()
window.title("Remote Environment Variable Editor")
window.geometry("400x400") # Set the initial window size# Create and place widgets
frame = ttk.Frame(window)
frame.pack(fill=tk.BOTH, expand=True)canvas = tk.Canvas(frame)
canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)scrollbar = ttk.Scrollbar(frame, command=canvas.yview)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)canvas.configure(yscrollcommand=scrollbar.set)
canvas.bind('<Configure>', lambda e: canvas.configure(scrollregion=canvas.bbox("all")))inner_frame = tk.Frame(canvas)
canvas.create_window((0, 0), window=inner_frame, anchor='nw')row = 0
for key, value in entries.items():key_label = tk.Label(inner_frame, text=key)key_label.grid(row=row, column=0, padx=10, pady=5, sticky="e")value_entry = tk.Entry(inner_frame)value_entry.insert(0, value)value_entry.grid(row=row, column=1, padx=10, pady=5, sticky="w")entries[key] = value_entryrow += 1save_button = tk.Button(inner_frame, text="Save Changes", command=save_changes)
save_button.grid(row=row, columnspan=2, pady=10)# Start GUI event loop
window.mainloop()
导出成应用
将Python脚本打包成一个可执行的应用程序通常需要使用第三方库,例如PyInstaller或cx_Freeze。这些工具可以将Python代码和依赖项打包成一个独立的可执行文件,从而使应用程序在没有Python解释器的情况下也能运行。
以下是使用PyInstaller将Python脚本打包成可执行应用程序的步骤:
安装PyInstaller:
打开命令行终端,并输入以下命令来安装PyInstaller:
pip install pyinstaller
打包应用程序:
在命令行中,进入包含你的Python脚本的目录,然后运行以下命令来生成可执行文件:
pyinstaller --onefile your_script_name.py