我有一个 pyhton 程序,我使用 python-openvpn-client API 使用 .ovpn 配置文件连接到 VPN 服务器。
我已经从官网安装了python 3.13.1。然后我创建了一个虚拟 python 环境以在我的 python 项目中使用。
我已经成功安装了 python-openvpn-client (版本 0.0.1)包,它要求 python >= 3.9。我使用以下命令将其安装在我的虚拟环境中:
pip install python-openvpn-client
我从这里安装了OpenVpn。我使用的是 OpenVPN 2.6.12 版本 - 2024 年 7 月 18 日发布。
然后我做如下:
from openvpnclient import OpenVPNClient
def connect_to_vpn(config_path):
vpn = OpenVPNClient(config_path)
try:
vpn.connect()
while not vpn.is_connected():
print(f"Status: {vpn.status}")
sleep(2)
print("Connection successfully established.")
return vpn
except Exception as e:
print(f"Error connecting to VPN server: {e}")
return None
config_path 是 .ovpn 文件的完整路径。
执行代码行
vpn.connect()
时抛出异常:
module 'signal' has no attribute 'SIGUSR1'
如果我从 OpenVPN 应用程序导入相同的 .ovpn 文件并连接到 VPN 服务器,则可以正常工作,但不能从我的 python 程序中进行。
我的平台是Windows 10 Pro。
那么我做错了什么?
SIGUSR1
是 Windows 中不存在的信号,仅存在于类 UNIX 系统中。事实上,在包python-openvpn-client
的PyPI页面中明确指出:
该功能经过测试可在 macOS 和 Linux 上运行(图片:
和macOS-latest
)。ubuntu-24.04
因此,您要么必须使用 Windows 支持的包来更改库,要么使用替代解决方案,例如直接从 python 调用脚本(可以在此处找到示例)