pythonjythonsikulisikuli-scriptsikuli-x

Running SikuliX 1.1.4 Python scripts from Command Line


I have some Python (jython actually) scripts that run with Sikulix.

I was previously using version 1.1.1 and was using the command line (after doinmg the setup):

java -Dsikuli.Debug=-2 -cp sikulix.jar org.python.util.jython main.py

With version 1.1.4, there is no more setup, and jython has been removed from sikulix.jar and sikulixapi.jar. Jython is in another jar file (jython-standalone-2.7.1.jar).

I tried to run with following command line

java -Dsikuli.Debug=-2 -cp "sikulix.jar;jython-standalone-2.7.1.jar" org.python.util.jython main.py

But I get the following error

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    from sikuli.Sikuli import *
ImportError: No module named sikuli

The documentation is not fully updated on how to do it. They mention installation of jython, jip and other stuff but nothing managed to work.

Any idea on how to do it?

Thanks

==PS==:

After doing the following it almost worked:

I got the following error:

[error] RunTimeINIT:  *** terminating: Java arch not 64 Bit or not detected (java 8-32 version 1.8 vm 25.121-b13 class 52.0 arch null)

I have installed Jython with a 32-bits Java and it seems 64-bits Java is required.

I will probably try again with 64-bits Java JDK.


Solution

  • Add the following line at the beginning of your script

    import org.sikuli.script.SikulixForJython
    

    This will help to look for sikuli module in Java classes.

    You can then run with the command line mentionned previously:

    java -cp "sikulixapi.jar;jython-standalone-2.7.1.jar" org.python.util.jython main.py
    

    Example of Python script (main.py):

    import org.sikuli.script.SikulixForJython
    from sikuli.Sikuli import *
    
    notepad = App('notepad.exe')
    notepad.open()
    sleep(1)
    type("It is working!")
    notepad.close()