start node app from python script

18,818

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().

Share:
18,818
user3316792
Author by

user3316792

Updated on June 17, 2022

Comments

  • user3316792
    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?

  • arshbot
    arshbot almost 6 years
    How can I get the output from the command in my python script?
  • arshbot
    arshbot almost 6 years
    Figured it out. use p = subprocess.check_output(["command", "args"]) instead and decode the output with p.decode("utf-8")