

環境  
ubuntu16.04 LTS  
python 2.712 , python 3.5.2  
electron 1.8.2

Pythonを用いたGUIアプリの開発をしてみたいなと思い、Electronを使用した開発を試みるべく、以下のページを参考にしました。

<https://qiita.com/yoshizaki_kkgk/items/da9711c26e71522ad289>

上記のページのコードをそのままコピーペーストし、ページ内に記載のあるモジュールのインストールもしたのですが、electronのコマンドを実行しても、Terminalでもエラーメッセージ等表示されず、electronも起動しませんでした。  
main.js自体がうまく働いてないのか、Pythonのプログラム自体が働いてないのかわかりません。  
しかし、main.js内のコンソールへの文字の出力が行われてないので、main.js自体に問題があるのかもしれないのですが、完全にコピーペーストなので考えづらく、まったく解決方法が思いつかない状態です。  
electron自体はJavaScriptのみでの簡単なアプリケーションの作成では機能したので問題ないかと思われます。

[code]

    //main.js    
    // Electron側の初期設定
    const electron = require('electron');
    const app = electron.app;
    const BrowserWindow = electron.BrowserWindow;
    let mainWindow;
    
    // アプリを閉じた時にquit
    app.on('window-all-closed', function() {
      app.quit();
    });
    
    // アプリ起動後の処理
    app.on('ready', function() {
      var subpy = require('child_process').spawn('python',['./hello.py']);
      var rq = require('request-promise');
      var mainAddr = 'http://localhost:5000';
    
      var openWindow = function() {
        mainWindow = new BrowserWindow({width: 400, height: 300 });
        mainWindow.loadURL(mainAddr);
    
        // 終了処理
        mainWindow.on('closed', function() {
          mainWindow = null;
          subpy.kill('SIGINT');
        });
      };
    
      var startUp = function() {
        rq(mainAddr)
          .then(function(htmlString) {
            console.log('server started');
            openWindow();
          })
          .catch(function(err) {
            startUp();
          });
      };
    
      startUp();
    });
    
    
    
    #hello.py
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    from __future__ import print_function
    import time
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    
    def hello():
        return "Hello World!<br>This is powered by Python backend."
    
    if __name__ == "__main__":
        print('on hello')
        app.run(host="127.0.0.1", port=5000)
    
[/code]

ページ内に記載のあるコマンドを少し変えました。下記に記します。

[code]

    $ npm install request -g
    $ npm install request-promise -g 
    
[/code]

package.json

[code]

    {
      "name": "PythonApp",
      "version": "0.1.0",
      "main": "main.js",
      "dependencies": {
        "request-promise": "*",
        "electron-prebuilt": "*"
      }
    }
    
[/code]

このようなトラブルの解決方法を知っている方がいましたらおねがいします。


CC BY-SA 3.0
2018-02-24T19:19:06.497
41985
2018-04-04T03:53:48.870
2018-02-26T01:12:59.447
19110
27527
question
javascript python ubuntu electron
Pythonとelectronを使用したGUIアプリケーションの作成について


既に解決していらっしゃるかもしれませんが一応。

[code]

    var subpy = require('child_process').spawn('python',['./hello.py']);
    
[/code]

となっていますが、環境変数にpythonのパスは通っていますか？  
ここの spawn('python',['./hello.py']); は

[code]

    python hello.py
    
[/code]

というコマンドを打っていることと同義なので、パスが設定されていないのであればここが原因である可能性が高いです。


CC BY-SA 3.0
2018-04-04T03:53:48.870
42922
2018-04-04T03:53:48.870
27901
41985
answer