前言
WSL 是Windows的Linux子系统称呼,类似的还有WSA是安卓子系统。
WSL对比其他虚拟机产品更加轻量,本文记录WSL使用的小技巧以及WSL中配置Pyenv管理多Python版本,安装PySide6库遇到的问题和解决方案。
WSL迁移
WSL默认安装并不会让我们自己选择安装位置,但是我们可以通过上述方法在创建完成之后先导出,然后将其导入我们希望的安装位置。
列出当前安装的所有Linux发行版,以及它们的WSL版本(1或2)
wsl --list --verbose
删除已经安装的Ubuntu发行版
wsl --unregister Ubuntu
返回你的Linux发行版的根目录在Windows文件系统中的路径
wslpath -m /
导出你的Linux发行版
wsl --export Ubuntu ubuntu.tar
创建一个新的VHD文件
wsl --set-default-version 2
mkdir D:\WSL
wsl --import Ubuntu D:\WSL\Ubuntu ubuntu.tar --version 2
Pyenv安装配置
安装pyenv
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
配置环境变量以及镜像源
vim ~/.bashrc
添加以下内容
# Pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1
export PYTHON_BUILD_MIRROR_URL="https://mirrors.huaweicloud.com/python/"
安装python3.12
pyenv install 3.12
如果报错
Downloading Python-3.12.3.tar.xz...
-> https://mirrors.huaweicloud.com/python/3.12.3/Python-3.12.3.tar.xz
Installing Python-3.12.3...
BUILD FAILED (Ubuntu 22.04 using python-build 20180424)
Inspect or clean up the working tree at /tmp/python-build.20240416224038.4018
Results logged to /tmp/python-build.20240416224038.4018.log
Last 10 log lines:
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... "linux"
checking for gcc... no
checking for cc... no
checking for cl.exe... no
checking for clang... no
configure: error: in `/tmp/python-build.20240416224038.4018/Python-3.12.3':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
那么执行下面命令来安装build-essential包
这个错误表明在你的系统中没有找到C编译器。Python是用C语言编写的,所以在从源代码安装Python时,你需要一个C编译器。
sudo apt update
sudo apt install build-essential
接下来还可能报错
BUILD FAILED (Ubuntu 22.04 using python-build 20180424)
Inspect or clean up the working tree at /tmp/python-build.20240416224538.6765
Results logged to /tmp/python-build.20240416224538.6765.log
Last 10 log lines:
File "/tmp/python-build.20240416224538.6765/Python-3.12.3/Lib/ensurepip/__init__.py", line 200, in _bootstrap
return _run_pip([*args, *_PACKAGE_NAMES], additional_paths)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/python-build.20240416224538.6765/Python-3.12.3/Lib/ensurepip/__init__.py", line 101, in _run_pip
return subprocess.run(cmd, check=True).returncode
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/python-build.20240416224538.6765/Python-3.12.3/Lib/subprocess.py", line 571, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/tmp/python-build.20240416224538.6765/Python-3.12.3/python', '-W', 'ignore::DeprecationWarning', '-c', '\nimport runpy\nimport sys\nsys.path = [\'/tmp/tmpdzkt9q7m/pip-24.0-py3-none-any.whl\'] + sys.path\nsys.argv[1:] = [\'install\', \'--no-cache-dir\', \'--no-index\', \'--find-links\', \'/tmp/tmpdzkt9q7m\', \'--root\', \'/\', \'--upgrade\', \'pip\']\nrunpy.run_module("pip", run_name="__main__", alter_sys=True)\n']' returned non-zero exit status 1.
make: *** [Makefile:2025: install] Error 1
这个错误表明在安装Python过程中,ensurepip模块(Python的一个用于安装和升级pip的模块)遇到了问题。这可能是由于你的系统中缺少一些必要的库或工具。
在Ubuntu系统中,你可以尝试安装以下的开发库和工具,这些库和工具通常是编译Python所需要的。这将安装一些必要的开发库和工具,包括用于编译Python的make和build-essential,以及Python可能需要的一些库,如libssl-dev,zlib1g-dev,libreadline-dev等
sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev xz-utils \
tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
设置pip镜像
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
安装 Nautilus
Nautilus 也称为 GNOME Files,是 GNOME 桌面的文件管理器。 (类似于 Windows 文件资源管理器)。
sudo apt install nautilus -y
使用nautilus
启动
PySide6使用
运行Pyside6相关代码报错
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: linuxfb, xcb, eglfs, vkkhrdisplay, minimal, offscreen, wayland-egl, minimalegl, vnc, wayland.
Aborted
在 Linux 上安装 PySide6 通常只需要使用 pip,但是你可能需要安装一些额外的库文件来支持 Qt。你可以尝试安装以下的库文件:
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
sudo apt-get install libxkbcommon-x11-0
sudo apt-get install libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev
然后,你可以尝试卸载并重新安装 PySide6:
pip uninstall PySide6
pip install PySide6