J'essaie d'exécuter un script python à partir de SSIS Execute Process Task. J'ai suivi tous les tutoriels sur la façon de le faire et le script échoue depuis le début. lorsque j'exécute le script python à partir de SSIS, il fonctionne parfaitement.
Voici mon script Python:
import sys
import gender_guesser.detector as gender
import xml.etree.cElementTree as ET
from xml.etree.ElementTree import ParseError
try:
input("Press Enter to continue...")
except SyntaxError:
pass
tree = ET.parse('user.xml')
root = tree.getroot()
for child_of_root in root:
for attr in child_of_root:
if attr.tag == 'first_name':
upperName = "%s%s" % (attr.text[0].upper(), attr.text[1:])
print attr.tag,upperName
d = gender.Detector()
gen = d.get_gender(upperName)
print gen
attr.text= gen
tree = ET.ElementTree(root)
tree.write("user1.xml")
ceci est une image de la tâche d'exécution du processus SSIS:
message d'erreur:
[Execute Process Task] Error:
In Executing "C:\Python27\python.exe" "C:\Users\bla\blalba\bla\gender-guesser-0.4.0\test\genderTest.py " at "", The process exit code was "1" while the expected was "0".
Avez-vous eu des espaces dans votre chemin de fichier vers votre script python? J'ai eu la même erreur en essayant de passer un chemin avec des espaces comme argument dans Execute Script Process. La résolution était de saisir l'argument avec des guillemets.
Lorsque le processus est lancé à partir de Execute Process Task
étape du package SSIS, il n'est pas exécuté à partir du même dossier que le fichier exécutable (.bat
, .py
, .exe
et ainsi de suite) situé. Ce qui est différent de l'exécution directe du fichier. Et cela peut être particulièrement important dans le cas où votre fichier exécutable fonctionne avec d'autres fichiers dans le même dossier.
Il est donc nécessaire de spécifier en plus la propriété du dossier de travail de Execute Process Task
étape du package SSIS.
Sur votre capture d'écran répertoire de travail la valeur de la propriété est vide. Mettez-y le C:\Users\bla\blalba\bla\gender-guesser-0.4.0\test\