8
votes

Subgrocession Python à l'aide de sous-processus d'importation

Peut-on être en quelque sorte surmonté? Un processus enfant peut-il créer un sous-processus?

Le problème est que j'ai une application prête qui doit appeler un script Python. Ce script sur ses propres fonctionne parfaitement, mais il doit appeler des scripts shell existants.

schématiquement le problème est dans le code suivant:

parent.py Xxx

enfant.py xxx

exécuté enfant.py xxx

exécuté parent.py < / h3> xxx


4 commentaires

Ceci est sur Solaris 2.6.2 - Avez-vous essayé ces exemples sur une autre plate-forme?


Désolé - Solaris 10, Python 2.6.2 a été construit à partir de la source


Cela devrait fonctionner. Voir ma réponse. J'ai une hunch que vous utilisez deux exécutables de Python différents.


Juste avant la ligne Import Import Import Line in Child.py, essayez d'impression sys.path . Comparer entre le cas où cela fonctionne et le cas ne le fait pas.


3 Réponses :


2
votes

Il ne devrait pas y avoir rien d'empêcher d'utiliser Subprocess en enfantine.py et parent.py

Je suis capable de le courir parfaitement bien. :)

problème de débogage :

Vous utilisez python et / usr / sfw / bin / python .

  1. est le python nu pointant vers le même python?
  2. Pouvez-vous vérifier en tapant 'quel python'?

    Je suis sûr que si vous avez fait ce qui suit, cela fonctionnera pour vous. xxx

    Vous pouvez modifier votre code parent.py? à xxx


4 commentaires

Je suppose que le problème est le chemin de recherche de module, par opposition au code lui-même. Alors oui, répondez à venir. :)


Oui, j'utilise le même python que python / usr / sfw / bin / python


le même échec avec / usr / sfw / bin / python parent.py


Non, Python Parent.py SubProC App Call SubProC .. Traceback (dernier appel en dernier): fichier "/usr/apps/openet/bmssystest/relauto/varioussw/child.py", ligne 2, dans? Import Subprocess Importerror: Aucun module nommé sous-processus



0
votes

Utilisation de Subprocess.Call CODE> n'est pas la bonne façon de le faire. À mon avis, subprocess.popen code> serait mieux.

parent.py: p> xxx pré>

enfant.py p> xxx pré>

hors programme: p>

python parent.py 
['arg1', 'arg2']
.
..
chid.py
child.py
.child.py.swp
parent.py
.ropeproject


0 commentaires

0
votes

Vous pouvez essayer d'ajouter votre répertoire Python à Sys.Path in chield.py

import sys
sys.path.append('../')


0 commentaires