Ubuntu安裝PySide6開發(fā)桌面應用實踐
一、引言
最近接觸了python相關方向的任務,需要開發(fā)一個桌面應用對接大模型做測試。于是有了這篇。
二、Ubuntu非桌面端安裝PySide6
本來嘛,ubuntu桌面系統(tǒng)直接安裝PySide6,再裝一個vscode就行,無奈手頭只有一臺windows,暫時先通過 wsl2來模擬跑一下。
2.1、wsl2 Ubuntu安裝基礎工具
首先安裝pip:
sudo apt update sudo apt install python3-pip
之后,通過pip安裝 PySide6:
pip3 install PySide6
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.12/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
原因是Ubuntu系統(tǒng) 為了保護系統(tǒng) Python 環(huán)境,禁止直接用 pip 安裝全局包,這是 Python PEP 668 規(guī)范的安全限制。
其實就是推薦你先 設個虛擬環(huán)境,再 安裝。
# 1. 創(chuàng)建虛擬環(huán)境(指定存放路徑,比如 ~/pyside6_venv) python3 -m venv ~/pyside6_venv # 2. 激活虛擬環(huán)境(每次使用前都需要執(zhí)行) source ~/pyside6_venv/bin/activate
創(chuàng)建虛擬環(huán)境報錯:
python3 -m venv ~/pyside6_venvThe virtual environment was not created successfully because ensurepip is notavailable. On Debian/Ubuntu systems, you need to install the python3-venvpackage using the following command.
apt install python3.12-venv
You may need to use sudo with that command. After installing the python3-venvpackage, recreate your virtual environment.
Failing command: /home/iqos/pyside6_venv/bin/python3?
原因是我的Ubuntu系統(tǒng)缺少創(chuàng)建 Python 虛擬環(huán)境必需的 python3.12-venv 包。需要先安裝這個 。
sudo apt install python3.12-venv -y
之后再創(chuàng)建并激活虛擬環(huán)境即可。
接下來安裝 PySide6:
pip install PySide6 Collecting PySide6 Downloading pyside6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl.metadata (5.3 kB) Collecting shiboken6==6.10.2 (from PySide6) Downloading shiboken6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl.metadata (2.5 kB) Collecting PySide6_Essentials==6.10.2 (from PySide6) Downloading pyside6_essentials-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl.metadata (3.7 kB) Collecting PySide6_Addons==6.10.2 (from PySide6) Downloading pyside6_addons-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl.metadata (4.0 kB) Downloading pyside6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl (563 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 563.4/563.4 kB 979.5 kB/s eta 0:00:00 Downloading pyside6_addons-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl (170.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 170.7/170.7 MB 172.0 kB/s eta 0:00:00 Downloading pyside6_essentials-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl (77.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 77.0/77.0 MB 136.9 kB/s eta 0:00:00 Downloading shiboken6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl (273 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 273.1/273.1 kB 26.2 kB/s eta 0:00:00 Installing collected packages: shiboken6, PySide6_Essentials, PySide6_Addons, PySide6 Successfully installed PySide6-6.10.2 PySide6_Addons-6.10.2 PySide6_Essentials-6.10.2 shiboken6-6.10.2
到這一步就安裝結束了。接下來是安裝Windows版的VSCode,然后配置wsl來開發(fā)。
2.2、windows下安裝VSCode
2.2.1、第一步:配置 WSL 支持 GUI 顯示
# 在 WSL 終端執(zhí)行 wsl --version # 查看版本,確保有 WSLg 相關信息 wsl -l -v # 檢查 Ubuntu 發(fā)行版的版本是 2
如果版本是 1,執(zhí)行 wsl --set-version Ubuntu 2 切換到 WSL 2(需等待幾分鐘)。
2.2.2、第二步: 安裝 WSL 所需的 GUI 依賴(Ubuntu 端)
即使有 WSLg,也需要安裝基礎的 X11 依賴才能運行 Qt 程序:
sudo apt update sudo apt install -y libx11-6 libxcb1 libxkbcommon-x11-0 libgl1-mesa-glx
這里出現(xiàn)錯誤:
E: Package 'libgl1-mesa-glx' has no installation candidate
libgl1-mesa-glx 是 OpenGL 渲染依賴,Ubuntu 22.04 LTS 及以上版本中,這個包已被 libgl1-mesa-dri + libgl1 替代,直接安裝會提示找不到,我們換一套兼容所有 Ubuntu 桌面版本的依賴安裝命令即可。
直接安裝通用的依賴即可:
sudo apt update && sudo apt install -y \
python3-pip \
python3-venv \
libx11-6 \
libxcb1 \
libxkbcommon-x11-0 \
libgl1 \
libgl1-mesa-dri \
libqt6gui6 \
libqt6core6 \
libqt6widgets6
2.2.3、第三步: 驗證 GUI 功能(可選)
安裝一個簡單的 GUI 工具測試:
sudo apt install -y x11-apps xeyes # 運行后會在 Windows 桌面彈出一個眼睛跟隨鼠標的窗口,說明 GUI 配置成功
2.2.4、安裝Windows 端 VSCode 連接 WSL 開發(fā)
1.安裝 Windows 版 VSCode
- 從 VSCode 官網(wǎng) 下載 Windows 版并安裝(不是 Ubuntu 端的 VSCode)。
2.安裝 中文語言包
- 打開 Windows 端 VSCode → 擴展面板(Ctrl+Shift+X)→ 搜索并安裝 Chinese (Simplified) (簡體中文) Language(微軟官方插件)。安裝完重啟應用中文
3.安裝 WSL 插件
- 打開 Windows 端 VSCode → 擴展面板(Ctrl+Shift+X)→ 搜索并安裝 Remote - WSL(微軟官方插件)。
4.連接 WSL 環(huán)境
- 安裝完成后,點擊 VSCode 左下角的「><」圖標 → 選擇「New WSL Window using Distro…」→ 選擇你的 Ubuntu 發(fā)行版。
- 此時會打開一個新的 VSCode 窗口,標題欄顯示「WSL: Ubuntu」,說明已連接到 WSL 環(huán)境。

點擊左側的 打開文件夾…,或者按快捷鍵 Ctrl+K Ctrl+O,在彈出的對話框中選擇 WSL 里的項目目錄(例如 ~/pyside6_demo)。

如果沒有,輸入~,回車打開ubuntu內(nèi)文件夾列表,左側邊欄 點擊新建項目目錄。

然后進入目錄下,新建一個main.py,輸入示例代碼,點擊 左上方右側…中的運行,結果提示:
示例代碼:
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("WSL PySide6 測試")
self.setFixedSize(400, 200)
central = QWidget()
self.setCentralWidget(central)
layout = QVBoxLayout(central)
self.label = QLabel("Hello WSL + PySide6!")
layout.addWidget(self.label)
btn = QPushButton("點擊我")
btn.clicked.connect(lambda: self.label.setText("Windows 顯示 WSL 窗口!"))
layout.addWidget(btn)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec())

- 點擊彈窗中的 查找 Python 擴展 (F),或者按 Ctrl+Shift+X 打開擴展面板。
- 在擴展面板的搜索框中輸入 Python,找到微軟官方的 Python 擴展。
- 此時擴展按鈕會顯示為 在 WSL:Ubuntu 中安裝,點擊它進行安裝。
- 安裝完成后,VSCode 會提示你重新加載窗口,點擊確認。



該截圖是默認的python解釋器。而我們前面已經(jīng)安裝了python3到虛擬環(huán)境。所以此處快捷鍵Ctrl+Shift+p調(diào)出查找框:

之后,選擇我們安好的 解釋器 :

此時,示例代碼終于依賴可用了。
運行后,windows桌面下出現(xiàn)該實例代碼的輸出:

ok,基本流程到此結束。后續(xù)可以開發(fā)了。
三、Ubuntu桌面系統(tǒng)開發(fā)
這里就不細說了,很簡單,時間問題后續(xù)有空寫點兒。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python報錯TypeError: unhashable type: ‘numpy.nd
在Python編程中,尤其是在處理數(shù)據(jù)時,我們經(jīng)常使用numpy數(shù)組,然而,當我們嘗試將numpy數(shù)組用作字典的鍵或集合的元素時,就會遇到TypeError: unhashable type: 'numpy.ndarray',本文將探討這個錯誤的原因,并給出幾種可能的解決方案,需要的朋友可以參考下2024-09-09
一文教你Python如何創(chuàng)建屬于自己的IP池
這篇文章主要為大家詳細介紹了python如何創(chuàng)建屬于自己的IP池,文中的示例代碼講解詳細,對我們學習或工作有一定參考價值,需要的可以參考一下2022-04-04
Python實現(xiàn)Smtplib發(fā)送帶有各種附件的郵件實例
本篇文章主要介紹了Python實現(xiàn)Smtplib發(fā)送帶有各種附件的郵件實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
Python+Selenium實現(xiàn)讀取網(wǎng)易郵箱驗證碼
在自動化工作中,有可能會遇到一些發(fā)送郵箱驗證碼類似的功能。本文將利用Python?Selenium實現(xiàn)自動化讀取網(wǎng)易郵箱驗證碼,感興趣的可以了解一下2022-03-03

