After packaging my app for a linux system, the python script for doing some background tasks fails to execute, probably because it is not packaged correctly. I've looked through several threads now, stumbled over ASAR, extraResources etc. but I'm not really getting it to work.
My folder structure is the following
- App.Root
|-public
| -background.html
|
|-scripts
-python.py
This is the content of my background.html:
<script>
const { PythonShell } = require('python-shell');
const { ipcRenderer } = require('electron');
const path = require('path');
let pyshell
ipcRenderer.on('START_PROCESSING', (event, args) => {
console.log("Loading Python")
const { data } = args;
pyshell = new PythonShell(path.join(__dirname, '/../scripts/python.py'), {
pythonPath: 'python3',
pythonOptions:['-u'],
args: [data]
});
pyshell.on('message', function (results) {
ipcRenderer.send('MESSAGE_FROM_BACKGROUND', { message: results });
});
});
ipcRenderer.on('QUIT_PYTHON', (event, args) => {
pyshell.kill();
ipcRenderer.send('CLOSE_BACKGROUND');
});
ipcRenderer.send('BACKGROUND_READY');
I already tried including the scripts folder like this and I think it worked since it appeared in the "dist" folder but dont know where to go from here:
"extraResources": [
{
"from": "scripts",
"to": "scripts"
}
I understand that this is an issue with paths and how electron is packaging the app, but since I`m new to all of this I feel a bit overwhelmed. People posted a bunch of different solutions which weren't working for me, or the problem was never solved.
I'd be glad if somebody who's familiar with packaging electron apps can chime in.
//EDIT:
This is my current build{} config:
"build": {
"files": [
"build/**/*",
"node_modules/**/*"
],
"asarUnpack":"./scripts/**",
"extraResources": "./scripts/**",
"publish": {
"provider": "github",
"repo": "test",
"owner": "Test"
}
},
I also changed:
pyshell = new PythonShell(path.join(__dirname, '/../scripts/python.py')
To:
pyshell = new PythonShell(path.join(process.resourcesPath, '/scripts/python.py')
cause it was obivously wrong.