在Qlik Sense加载脚本中执行python脚本

时间:2018-02-26 16:52:38

标签: python qliksense

我正在尝试在Qlik Sense app中的加载脚本中运行python脚本。

我知道我需要将OverrideScriptSecurity=1放入Settings.ini

我把

Execute py lib://python/getSolution.py 100 'bla'; // 100 and 'bla' are parameters

我在qlik意义上没有错误,但脚本没有被执行(我认为),因为我在脚本中有

f = open("file.xml", "wb")
f.write(xml)
f.close

并且文件未保存。

如果我从终端运行脚本,则脚本正确执行。

可能出现什么问题?

顺便说一下,我的python解释器的完整路径是

C:\Users\Marko Z\AppData\Local\Programs\Python\Python37-32\python.exe

编辑:

即使我添加了这个

Set vPythonPath = "C:\Users\Marko Z\AppData\Local\Programs\Python\Python37-32\python.exe";
Set vPythonFile = "C:\Users\Marko Z\Documents\Qlik\Sense\....\getSolution.py";

Execute $(vPythonPath) $(vPythonFile);

我得到了同样的行为。没有错误,但没有工作,...... 我甚至看到,如果我改变路径(错误的路径)它给我一个错误,但不正确的文件它不会给我一个错误....(但我相信它是正确的文件路径...)

我的python代码是

xml = "Marko"
xml = xml.encode('utf-8')
f = open("C:\\Users\\Marko Z\\Test.xml", "wb")
f.write(xml)
f.close

3 个答案:

答案 0 :(得分:1)

我弄清楚出了什么问题。 对于其他会遇到类似问题的人:

问题在于路径中的空间。 如果我在c:\ Windows \ getSolution.py中移动我的脚本就可以了。我还需要将python路径更改为c:\ Windows \ py.exe

所以结束脚本看起来像:

Execute c:\Windows\py.exe c:\Windows\getSolution.py 100 'bla';

但我仍然需要弄清楚如何在路径中使用空间......

答案 1 :(得分:0)

奇怪。使用完全相同的python文件和QS脚本,可以正确生成结果文件。

settings.ini的内容。

[Settings 7]
StandardReload=0
OverrideScriptSecurity=1    

根据Qlik的文档,最后应该有一个空行(来自lists的第4点)

答案 2 :(得分:0)

我能够按以下要求操作以下内容:

set vPyExe = C:\Program Files\Python37\python.exe;
set vPyScript = D:\...\PythonScript.py; 

Execute
"$(vPyExe)" "$(vSource)"
;