在我将 Ubuntu 20.04 笔记本电脑从 python3.8 升级到 python 3.11 后,Openvpn3 停止工作
我收到此错误:
openvpn3-systemd[9972]: ModuleNotFoundError: No module named '_dbus_bindings'
我发现它import dbus
适用于 python3.8,但不适用于 python3.11
我尝试通过将默认系统 python 改回 3.8 来使 openvpn3 正常工作
sudo update-alternatives --config python
我还验证了当我在命令行中使用 python 时,它会找到 dbus,
python -c 'import dbus'
重新启动服务仍然失败并出现相同错误。我编辑了文件/usr/libexec/openvpn3-linux/openvpn3-systemd
,以便在尝试使用文件顶部的以下两行导入 dbus 之前打印 python 版本:
import sys
print ('openvpn3-python-version-used: ' + sys.version)
我看到它使用的是 python3.11
我如何更改服务文件以强制它使用旧版本的 python3.8?/lib/systemd/system/[email protected]
当前服务文件:
[Unit]
Description=OpenVPN 3 Linux - VPN session for %I
After=dbus.service network-online.target
Wants=dbus.service network-online.target
Documentation=man:openvpn3-linux(7)
Documentation=man:openvpn3-systemd(7)
[Service]
Type=notify
PrivateTmp=true
ProtectSystem=true
ProtectHome=true
Environment="PYTHONUNBUFFERED=on"
ExecStart=/usr/libexec/openvpn3-linux/openvpn3-systemd --start %i
ExecReload=/usr/libexec/openvpn3-linux/openvpn3-systemd --restart %i
ExecStop=/usr/libexec/openvpn3-linux/openvpn3-systemd --stop %i
[Install]
WantedBy=multi-user.target
不要那样做。
Ubuntu 20.04 附带 Python 3.8。Ubuntu 20.04 中的所有内容都以 Python 3.8 为目标。
这是合同的一部分;Ubuntu 将维护并将(安全)修复反向移植到 Python 3.8;如果您有在 Python 3.8 上运行的东西,它将在 20.04 的生命周期内继续在 Python 3.8 上运行。
我很惊讶只有 OpenVPN 崩溃了。我预计很多系统工具都会停止工作,例如
apt
。此外,如果安装了,
python
应该始终是 Python2。Python3 应该是python3
。在 20.04 系统上,您应该python3
指向python3.8
,因此运行update-alternatives --config python3
。对于需要 3.11 的东西,让它运行python3.11
。