FileNotFoundError: [WinError 2] Не удается найти указанный файл, subprocess.popen
Пишу небольшой vpn-клиент для личного использования. В строке
t = str(subprocess.call(r'Add-VpnConnection.exe -Name "VPNclient" -ServerAddress "vpnaddress” -PassThru')).encode("cp866").decode("windows-1251")
showinfo(str(t), str(t))
Возникает ошибка:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\Ivan\Desktop\vpn\main.py", line 25, in oneconnect
t = str(subprocess.call(r'Add-VpnConnection.exe -Name "wefewfeewffewfwwefweff" -ServerAddress "vpn.winitpro.ru” -PassThru')).encode("cp866").decode("windows-1251")
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\subprocess.py", line 349, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Не удается найти указанный файл
Для проверки на работоспособность popen использовал
t = str(subprocess.call(r'ping 8.8.8.8')).encode("cp866").decode("windows-1251")
В таком случае все работает корректно
Возможно, ошибка возникает потому что команда выполняется только в powershell, но не в cmd. Если это так, то как можно использовать powershell в python?
p.s. os.popen то же самое
Ответы (1 шт):
Автор решения: IvanProkshin
→ Ссылка
Оказалось, что и правда, команда выполняется в cmd, а чтобы выполнить в powershell, нужно сделать так:
t = str(subprocess.call('powershell -executionpolicy bypass -command \"Add-VpnConnection -Name "wefewfeewffewfwwefweff" -ServerAddress "vpn.winitpro.ru” -PassThru\"')).encode("cp866").decode("windows-1251")