Как передать параметр в exec (open (). Read ())? - PullRequest
0 голосов
/ 23 февраля 2019

Написание скрипта, который автоматизирует установку git-репо Web Assembly.Он загружает репозиторий, вызывает команды для его настройки.

Я работаю над инструкциями этого сайта: https://webassembly.org/getting-started/developers-guide/

Целевое поведение: $ source ./emsdk_env.sh --build=Release

Это не так просто в Python, так как подпроцесс, кажется, не сокращает его.Я нашел команду exec(open("filename.sh").read()), но не могу понять, как передать в--build=Release параметр.

Я думаю, что это кортеж ключ-значение, и его нужно передать как таковой, но как это сделать, тоже нелегко было найти.Это текущий код, который я пытаюсь выполнить:

with open(emsdk_envFile) as f:
    code = compile(f.read(), emsdk_envFile, 'exec')
    exec(code, 'Release')

Это вывод CLI, который я получаю:

  File "installWebAssembly.py", line 184, in main
    code = compile(f.read(), emsdk_envFile, 'exec')
  File "/home/bcuser/Git/emsdk/emsdk_env.sh", line 19
    if [ "$SRC" = "" ]; then
                ^
SyntaxError: invalid syntax

Было предложено использовать подпроцесс.Однако, когда я запускаю подробную команду в Subprocess.call (), я получаю такой вывод:

subprocess.call('source /home/bcuser/Git/emsdk/emsdk_env.sh --build=Release', shell=True)
...
$ python myScript.py
OUTPUT:
/bin/sh: 1: source: not found
/bin/sh: 1: source: not found

Конечная цель - автоматизировать все шаги, необходимые для установки и использования веб-сборки.Цель файла emsdk_env.sh - добавить соответствующие переменные среды и записи каталога в PATH, чтобы настроить текущий терминал для быстрого доступа к инструментам компилятора.

...