
はじめに
WSL2上のUbuntuを使ってLLMを使ったり、画像生成したり、動画生成したりしています。Ubuntu環境がごちゃごちゃになるのが嫌なので、その都度新規のUbutnu環境を作っています。ストレージに余裕があるので、力技です。これができるのがWSL2のいいところでしょうか。CUDAのバージョンごとにUbuntuを複製するのもわかりやすくてGoodです。方法は以下の記事を参考にしています。laboradian.com
だんだん選択して起動するのが面倒くさくなってきたので、冒頭のGUIを作りました。
一覧から選択してボタンを押すと、指定のUbuntuが起動してくれます。
Pythonスクリプト
from PySide6.QtWidgets import ( QApplication, QMainWindow, QWidget, QListWidget, QListWidgetItem, QPushButton, QVBoxLayout ) import subprocess import sys def get_wsl_distributions(): try: output = subprocess.check_output(["wsl", "-l", "-v"]) return output except subprocess.CalledProcessError as e: print(f"Error executing command: {e}") return None class Window(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): distributions = get_wsl_distributions() if distributions: distributions = distributions.decode() distributions = distributions.replace("*", " ") distributions = distributions.replace("\x00", "") d_list = [x.strip() for x in distributions.splitlines() if x.strip() != ""] n_list = [x.split()[0] for x in d_list[1:]] else: print("Unable to retrieve WSL distributions.") sys.exit() self.list_widget = QListWidget() for kernel in n_list: item = QListWidgetItem(kernel) self.list_widget.addItem(item) self.button1 = QPushButton("start") self.button1.clicked.connect(self.pushed) layout = QVBoxLayout() layout.addWidget(self.list_widget) layout.addWidget(self.button1) mainwidget = QWidget() mainwidget.setLayout(layout) self.setCentralWidget(mainwidget) def pushed(self): selected_kernel = self.list_widget.currentItem() subprocess.Popen(["wsl", "-d", selected_kernel.text(), "-u", "hoge"]) sys.exit() if __name__ == "__main__": app = QApplication([]) window = Window() window.show() app.exec()