Справочная информация
Я написал базовую функцию, которая пытается использовать подпроцесс для выполнения команды cmd. Сначала тестируется система пользователя (следующая функция предназначена только для пользователей Windows) перед открытием 1Password (
) перед выполнением следующей команды cmd «op», «item», «get», item_title, «--vault», vault_name, «--format», «json», которая использует 1Password' d CLI. Функция
C: \Users\MyUserName\PyCharMiscProject\.venv\Scripts\python.exe "C:\Users\MyUserName\PyCharaNiscProject\Replicator 1.1.py"
Please enter an Entity ID: 8406865
Please wait for windows Password prompt
Traceback (most recent call last):
File "C:\Users\MyUserName\PyCharmMiscProject\Replicetor_1.1.px*. Line 222, in ‹nodute>
entity-attributes = get_entity_attributes(entity_id)
File "C:\Users\MyUserName\PyChareMiscProject\Replicator_1.1.PX", Line 79, in get_entity_ettributes
api_key, api_secret = windows_1P_auth(item_title, vault_name)
٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨
File "C:\Users\MyUserName\PyCharmMiscProject\Replicator_1.1.py", Line 22, in windows_1P_auth
result = subprocess.run(
["op", "item", "get", item_title, "--vault", vault_name, "--foreat*, "json*],
......
check=True
)
File "C:\Users\MyUserName\AppData\Local\Programs\Python|Python313\Lib|subprocess.py*, line 554, in run
with Popen(*popenargs, **kwargs) as process:
~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\Users\MyUserName\AppData\Local\Programs\Python|Python313\LAb\subprocesg.py*. line 1036, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pass_fds, cwd, env,
^^^^^^^^^^^^^^^^^^
... ...
gid, gids, vid, umask,
^^^^^^^^^^^^^^^^^^^
start_new_session, process_group)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\MyUserName\AppData\Local\Programs|Python\Python313\Lib\subprocess.py*, line 1548, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
# no special security
^^^^^^^^^^^^^^^^^^^
......
cwd,
^^^^
startupinfo)
^^^^^^^^^^^
FileNotFoundError: (winError 2] The system cannot find the file specified
Process finished with exit code 1
Вопрос/Мысли:
Мне нужны советы о том, в чем может быть проблема? Тем более, что это, по-видимому, отлично работает на моей личной машине, однако 2 компьютера моих коллег возвращают ошибку, хотя на них определенно установлены одни и те же программы. Я знаю, что subprocess установлен (как и по умолчанию), поэтому мне интересно, нужно ли мне использовать subprocess.popen, а не subprocess.run. Есть ли в ошибке что-то очевидное, чего мне не хватает?
[b]Справочная информация[/b] Я написал базовую функцию, которая пытается использовать подпроцесс для выполнения команды cmd. Сначала тестируется система пользователя (следующая функция предназначена только для пользователей Windows) перед открытием 1Password ([code]os.system("start 1Password")[/code]) перед выполнением следующей команды cmd «op», «item», «get», item_title, «--vault», vault_name, «--format», «json», которая использует 1Password' d CLI. [b]Функция[/b] [code]# Importing dependencies import os import subprocess
# Globals os_name = platform.system()
# Windows-only authentication: access Employee 1P Vault and extracts credentials from "Addepar API" item def windows_1P_auth(item_title, vault_name): try: # Run the `op` CLI command to fetch the item os.system("start 1Password") result = subprocess.run( ["op", "item", "get", item_title, "--vault", vault_name, "--format", "json"], capture_output=True, text=True, check=True ) # Parse the JSON output item_data = json.loads(result.stdout)
# Extract credential fields username = None credential = None for field in item_data.get("fields", []): if field.get("label") == "username": api_key = field.get("value") # print(f'API Key: {api_key}') elif field.get("label") == "credential": api_secret = field.get("value") # print(f'API Secret: {api_secret}')
return api_key, api_secret
except subprocess.CalledProcessError as e: print(f"Error running op CLI: {e.stderr}") return None, None except json.JSONDecodeError: print("Failed to parse JSON output from op CLI.") return None, None [/code] [b]Проблема[/b]
Хотя я успешно выполнил эту функцию на своем личном ПК с Windows, когда я пробую это на своем рабочем ПК, Я получаю следующую ошибку: [b]Ошибка[/b] [code]C: \Users\MyUserName\PyCharMiscProject\.venv\Scripts\python.exe "C:\Users\MyUserName\PyCharaNiscProject\Replicator 1.1.py" Please enter an Entity ID: 8406865 Please wait for windows Password prompt Traceback (most recent call last): File "C:\Users\MyUserName\PyCharmMiscProject\Replicetor_1.1.px*. Line 222, in ‹nodute> entity-attributes = get_entity_attributes(entity_id) File "C:\Users\MyUserName\PyChareMiscProject\Replicator_1.1.PX", Line 79, in get_entity_ettributes api_key, api_secret = windows_1P_auth(item_title, vault_name) ٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨٨ File "C:\Users\MyUserName\PyCharmMiscProject\Replicator_1.1.py", Line 22, in windows_1P_auth result = subprocess.run( ["op", "item", "get", item_title, "--vault", vault_name, "--foreat*, "json*], ...... check=True ) File "C:\Users\MyUserName\AppData\Local\Programs\Python|Python313\Lib|subprocess.py*, line 554, in run with Popen(*popenargs, **kwargs) as process: ~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\Users\MyUserName\AppData\Local\Programs\Python|Python313\LAb\subprocesg.py*. line 1036, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pass_fds, cwd, env, ^^^^^^^^^^^^^^^^^^
... ... gid, gids, vid, umask, ^^^^^^^^^^^^^^^^^^^ start_new_session, process_group) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\MyUserName\AppData\Local\Programs|Python\Python313\Lib\subprocess.py*, line 1548, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^ # no special security ^^^^^^^^^^^^^^^^^^^ ...... cwd, ^^^^ startupinfo) ^^^^^^^^^^^ FileNotFoundError: (winError 2] The system cannot find the file specified
Process finished with exit code 1 [/code] [b]Вопрос/Мысли:[/b] Мне нужны советы о том, в чем может быть проблема? Тем более, что это, по-видимому, отлично работает на моей личной машине, однако 2 компьютера моих коллег возвращают ошибку, хотя на них определенно установлены одни и те же программы. Я знаю, что subprocess установлен (как и по умолчанию), поэтому мне интересно, нужно ли мне использовать subprocess.popen, а не subprocess.run. Есть ли в ошибке что-то очевидное, чего мне не хватает?
Мне нужно запустить команду date | grep -o -w ' +tz+ '' | wc -w, используя Python на моем локальном хосте. Я использую модуль subprocess для того же самого и метод check_output, так как мне нужно захватить выходные данные для него.
Я установил приложение с помощью pip в редактируемом режиме (App). Я использую приложение в сценарии через подпроцесс. Приложение должно создать подпапку в папке, содержащей входной файл CSV, а затем добавить в эту подпапку еще 4 файла CSV. Когда я...
Я установил приложение с помощью pip в редактируемом режиме (App). Я использую приложение в сценарии через подпроцесс. Приложение должно создать подпапку в папке, содержащей входной файл CSV, а затем добавить в эту подпапку еще 4 файла CSV. Когда я...
Платформа: ноутбук ThinkPAD/windows11/код Microsoft Visual Studio
Версия Python: Python 3.13.1
Я пытался загрузить треки с Spotify Music, я сохранил все ссылки на альбомы в текстовом файле. Надеюсь, следующий код загрузит все треки, ссылки на...
Платформа: ноутбук ThinkPAD/windows11/код Microsoft Visual Studio
Версия Python: Python 3.13.1
Я пытался загрузить треки с Spotify Music, я сохранил все ссылки на альбомы в текстовом файле. Надеюсь, следующий код загрузит все треки, ссылки на...