Sur ma machine locale, j'exécute un python script qui contient cette ligne
bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
os.system(bashCommand)
Cela fonctionne bien.
J'exécute ensuite le même code sur un serveur et j'obtiens 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 ensuite, c'est que j'ai inséré un print bashCommand
qui m'imprime que la commande dans le terminal avant de l'exécuter avec os.system()
.
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 simplement copié cette sortie et fait un copier-coller dans le terminal, puis j'ai appuyé sur Entrée et ça marche...
Est-ce que quelqu'un a une idée de ce qui se passe ?
3 votes
Il semble y avoir une différence dans l'environnement selon la façon dont vous exécutez
cwm
. Peut-être avez-vous une certaine configuration dans votre.bashrc
qui configure l'environnement pour une utilisation interactive de bash ?0 votes
Avez-vous essayé d'exécuter la commande à partir de la ligne de commande lorsque vous êtes connecté au serveur ? Votre message indique simplement que vous l'avez "collée dans le terminal".
0 votes
@Sven : oui, je voulais dire que j'ai exécuté la commande directement dans le terminal du serveur.
0 votes
Il semble qu'il y ait une différence dans le PYTHONPATH selon la façon dont vous exécutez
cwm
. Ou peut-être y a-t-il une différence dans PATH, et une version différente decwm
sont appelés. Ou différentes versions de Python. Il est vraiment difficile de comprendre cela sans avoir accès à la machine...