Exécuter des commandes Bash en Python
sur ma machine locale j'exécute un script python qui contient cette ligne
bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
os.system(bashCommand)
ça marche très bien.
puis j'exécute le même code sur un serveur et je reçois le message d'erreur suivant
'import site' failed; use -v for traceback
Traceback (most recent call last):
File "/usr/bin/cwm", line 48, in <module>
from swap import diag
ImportError: No module named swap
donc ce que j'ai fait alors est que j'ai inséré un" print bashCommand " qui m'imprime ensuite la commande dans le terminal avant de l'exécuter avec os.système.)(
bien sûr, je reçois à nouveau l'erreur (causée par OS.system (bashCommand)) mais avant cette erreur il imprime la commande dans le terminal. Ensuite, j'ai juste copié que la production et fait un copier coller dans le terminal et appuyez sur entrée et ça fonctionne...
est-ce que quelqu'un a une idée de ce qui se passe: (?
2 réponses
N'utilisez pas os.system
. Il a été déprécié en faveur de subprocess . Du docs : "ce module entend remplacer plusieurs anciens modules et fonctions: os.system
, os.spawn
".
comme dans votre cas:
bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
import subprocess
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
Appel avec des processus secondaire
import subprocess
subprocess.Popen("cwm --rdf test.rdf --ntriples > test.nt")
l'erreur que vous obtenez semble être parce qu'il n'y a pas de module swap sur le serveur, vous devriez installer swap sur le serveur puis exécuter le script à nouveau