start node app from python script
Solution 1
The first line of file shall be:
#!/usr/bin/python
You can call command with subprocess.call:
from subprocess import call
# Note that you have to specify path to script
call(["node", "path_to_script.js"])
Then you have to set +x
permissions for file to be executable:
chmod +x filename.py
Know you are ready to go:
./filename.py
Note: checkout Raspberry Pi Stack Exchange, you can find a lot of use full info there.
Solution 2
As Selcuk mentioned in his comment, use the subprocess
module:
#! /usr/bin/env python
import subprocess
subprocess.call('sudo node myscript.js')
It's very likely that you'll encounter a FileNotFoundError
when trying to run your command with sudo
. If you do, you can try:
#! /usr/bin/env python
import subprocess
subprocess.call('sudo node myscript.js', shell=True)
Per the Python documentation, be VERY careful about using the shell=True
parameter as this could be a problem if you allow any arbitrary user input to be passed to subprocess.call()
.
user3316792
Updated on June 17, 2022Comments
-
user3316792 about 2 years
Is it possible to start a node.js app from within a python script on a raspberry pi?
On the command line I run
sudo node myscript.js
could I use a library like os?
-
Selcuk over 8 yearsI don't know about pi but see docs.python.org/2/library/subprocess.html#module-subprocess
-
-
arshbot almost 6 yearsHow can I get the output from the command in my python script?
-
arshbot almost 6 yearsFigured it out. use
p = subprocess.check_output(["command", "args"])
instead and decode the output withp.decode("utf-8")