SSIS 执行进程任务 Python 脚本

13

我正在尝试从SSIS Execute Process任务中执行Python脚本。我按照所有教程的步骤进行操作,但脚本仍然从一开始就失败了。当我在SSIS之外执行Python脚本时,它可以完美运行。

这是我的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")

这是 SSIS 执行进程任务的图片:

这是 SSIS 执行进程任务的图片

错误信息:

    [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".

您有收到任何错误消息吗?在 import sys 前的空格是个问题,除非只是在贴代码到 SO 上时出现的。 - Cleared
是的,抱歉我忘记添加了。这是消息:进程退出代码为“1”,而预期为“0”。 - Elad L.
2个回答

18

你的Python脚本文件路径中是否带有空格?当我试图将带有空格的路径作为Execute Script进程的参数传递时,我也遇到了同样的错误。解决方法是使用引号输入参数。


4
当从SSIS包的Execute Process Task步骤启动进程时,它并不是从可执行文件所在的同一文件夹中运行(例如.bat.py.exe等)。这与直接运行文件时有所不同。如果可执行文件需要与同一文件夹中的其他文件一起工作,那么这可能特别重要。
因此,必须额外指定SSIS包的Execute Process Task步骤的工作文件夹属性。
您的屏幕截图中,“工作目录”属性值为空。请将C:\Users\bla\blalba\bla\gender-guesser-0.4.0\test\放入该位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接