Quickly import custom SPSS commands from Python

▼魔方 西西 提交于 2019-12-10 10:03:14

问题


I have written a neat Python module that contains some custom SPSS functions for my coworkers to use. However, to use the functionality, they first need to type BEGIN PROGRAM. Import module etc... before actually calling the function. Because most of them aren't tech savvy, I'm looking to make things easier.

Now they have to type something like this:

BEGIN PROGRAM.
import sys
sys.path.append("C:/Python scripts")
import mymodule
mymodule.custom_function('a','c')
END PROGRAM.

Is there a way I can write some SPSS-macro that will call the functions from my Python module in a single line? Like this:

!mymodule.custom_function varlist=a,b

I've tried defining a normal SPSS-macro and writing the BEGIN PROGRAM etc. in the macro body, but this yields an error. It seems that a macro-body can only contain valid SPSS syntax and no python code.

Is there another solution?


回答1:


There are several possible solutions. If you want to have a standard set of Python functions loaded automatically, you can create a startup script. It would be named StartClient_.py and placed in the scripts directory under the Statistics installation. That will be executed each time Statistics is launched. (This can be generalized using the STATS OPEN PROJECT extension command that can do a lot of things when it is invoked, including writing a startup script.)

Another solution if you just want users to be able to run Python functions without facing any Python code or BEGIN/END program is to use the SPSSINC PROGRAM extension command (Utilities > Run Python Program). It take a module and function to run and whatever parameters you want to specify.

Here's an example: SPSSINC PROGRAM testpgm.mypgn x=age y = income z=.05.

As the developer, to make this work see the syntax help for this command. The command loads the module and passes the parameters to your code using sys.argv.

If you have mostly point and click users, you could just create a few custom dialog boxes that hold the Python code and have users install them.



来源:https://stackoverflow.com/questions/35936239/quickly-import-custom-spss-commands-from-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!