Вызов скрипта Python из локального приложения JavaScript - PullRequest
0 голосов
/ 05 сентября 2018

, поэтому я немного осмотрелся и не смог найти подходящего варианта использования, с которым я столкнулся.

Для некоторого фона: Я довольно плохо знаком с JavaScript, и мне никогда не приходилось вызывать какие-либо другие программы / скрипты из него. Теперь я разработал скрипт на Python, который извлекает некоторые данные из онлайн-источников, форматирует их и выгружает в файлы JSON. Для правильного отображения этих данных я решил использовать Electron.

Хотя обработка файлов JSON вполне нормальна (было бы весьма печально, если бы я не догадывался), мне нужно иметь возможность вызывать скрипт Python для обновления данных из моего пользовательского интерфейса Electron. Поскольку все локально, я надеялся, что был бы более простой способ, чем настроить какой-либо сервер для запуска сценария Python, просто чтобы запустить его выполнение из моего приложения для рабочего стола. Это особенно верно, так как мне даже не нужно получать или обрабатывать какие-либо возвраты, я просто хочу запустить выполнение этого скрипта.

Таким образом, теперь возникает вопрос: существует ли такой «простой» способ выполнения скриптов Python из локально сохраненного приложения Desktop на базе Electron / JavaScript?

Заранее спасибо за любые ответы!

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Хорошо, поэтому после перенаправления на эту ветку , которую я могу только рекомендовать прочитать, если у вас есть интерес к этой проблеме, я взял их решение и немного изменил, что заняло у меня немного время, из-за некоторой путаницы, которую я сейчас хотел бы сэкономить вам, ребята!

Чтобы вновь представить проблему: цель состоит в том, чтобы вызвать скрипт Python из пользовательского интерфейса на основе JavaScipt / Electron. Сценарий python нужно только выполнить, но он должен выполняться onClick, поскольку это функция обновления.

Теперь это код, который я использовал:

const exec = require("child_process").exec;

function triggerUpdateAndRefreshFooter() {
  exec('python relativePathToScript/update.py',
    function(error, stdout, stderr) {                    //callback function, receives script output
      refreshFooter();                                  //don't use the output, but I could here
    }
  )
}

У меня были некоторые проблемы с выяснением всего этого константного материала в другом потоке, а также с предположением, ЕСЛИ я мог бы просто выполнить свой сценарий в отдельной функции. В конце концов это сработало!

Надеюсь, это было полезно!

0 голосов
/ 05 сентября 2018

Как и предыдущий упомянутый комментатор, вы должны быть в состоянии следовать этому SO-ответу в Node.js (это то, что использует Electron).

Чтобы немного пояснить этот ответ, я бы рекомендовал использовать встроенную утилиту Python JSON , чтобы вывести JSON в стандартный вывод (просто распечатав строку JSON), и использовать встроенная утилита JSON Node.js для анализа этой строки JSON в объект javascript для использования в вашем приложении.

...