我正在尝试在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
答案 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)"
;