#python #python-3.x
#python #python-3.x
Вопрос:
Я пытаюсь портировать интерфейс командной строки Proton-VPN Linux (https://github.com/ProtonVPN/linux-cli ) для Windows и до сих пор имели приличный успех, но я столкнулся с проблемой с [подпроцессом.Popen()]. Я перепробовал много исправлений, но пока ни одно из них не сработало. Я попытался преобразовать это:
with open(os.path.join(CONFIG_DIR, "ovpn.log"), "w ") as f:
subprocess.Popen(
[
"openvpn",
"--config", OVPN_FILE,
"--auth-user-pass", PASSFILE,
"--dev", "proton0",
"--dev-type", "tun"
],
stdout=f, stderr=f
)
который из исходного модуля, к этому:
file_name = os.path.join(CONFIG_DIR, "ovpn.log")
print(file_name)
with open(file_name, "w ") as f:
subprocess.Popen([
"openvpn",
"--config", OVPN_FILE,
"--auth-user-pass", PASSFILE,
"--dev", "proton0",
"--dev-type", "tun"
], stdout=f, stderr=f)
которые оба выдают одну и ту же ошибку:
Traceback (most recent call last):
File "c:users<user>appdatalocalprogramspythonpython39librunpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:users<user>appdatalocalprogramspythonpython39librunpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:Users<user>AppDataLocalProgramsPythonPython39Scriptsprotonvpn.exe__main__.py", line 7, in <module>
File "c:users<user>appdatalocalprogramspythonpython39libsite-packagesprotonvpn_clicli.py", line 73, in main
cli()
File "c:users<user>appdatalocalprogramspythonpython39libsite-packagesprotonvpn_clicli.py", line 114, in cli
connection.fastest(protocol)
File "c:users<user>appdatalocalprogramspythonpython39libsite-packagesprotonvpn_cliconnection.py", line 163, in fastest
openvpn_connect(fastest_server, protocol)
File "c:users<user>appdatalocalprogramspythonpython39libsite-packagesprotonvpn_cliconnection.py", line 463, in openvpn_connect
subprocess.Popen([
File "c:users<user>appdatalocalprogramspythonpython39libsubprocess.py", line 947, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "c:users<user>appdatalocalprogramspythonpython39libsubprocess.py", line 1416, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
Кто-нибудь может мне помочь? Я весь день боролся с этим и не смог найти исправление. (кстати, я очень новичок в python)
Редактировать: при попытке напечатать «f» из исходного модуля он возвращает это — «<_io.TextIOWrapper name=’C:Users\.pvpn-cliovpn .log’ mode=’w ‘ encoding=’cp1252’>». Я попытался ввести имя на вкладку проводника и получил сообщение об ошибке, но после удаления двойных косых черт я попал в файл. Я совершенно уверен, что двойные косые черты должны быть там, но может ли это быть проблемой?
Комментарии:
1. Что происходит, когда вы запускаете команду openvpn непосредственно на своем терминале? Вы проверили, что файлы OVPN_FILE и PASSFILE действительно существуют? Что происходит, когда вы жестко задаете фактический абсолютный путь? Похоже, ему не удается найти эти файлы.
2. Не уверен в вашем первом вопросе, я дам вам знать позже, когда смогу вернуться к своему компьютеру. Я проверил, что эти файлы существуют на 100%, и я жестко запрограммировал путь, а также получил ту же ошибку.
3. Существует ли оно? Это в пути? Если вы откроете командную строку и наберете
openvpn
текст, это сработает?4. Да, я проверял много раз, и файл есть, и он возвращает правильный путь к файлу «ovpn.log», который определенно существует. При вводе «protonvpn» возвращается общее меню справки. Чтобы получить ошибку, описанную выше, я набираю «protonvpn connect», которая выводит меня через несколько диалоговых окон, или «protonvpn connect -f -p UDP», который соединяет меня с самым быстрым сервером на UDP без диалоговых окон.
5. OpenVPN — это реальная программа, она у вас установлена?
with open(..., "w ") as f:
Строка, очевидно, продолжается / создает файл, но это не приведет к чудесной установке OpenVPN для вас. openvpn.net/download-open-vpn , возможно openvpn.net/community-downloads-2