Как исправить ошибку FileNotFoundError [WinError 2]?

#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