我刚开始用Python中的Sikuli做一些脚本。
我想知道是否有可能(如果是的话,如何)从我的python脚本(文件.py和图像)创建一个jar或exe文件。
我想从其他没有安装sikuli的机器(例如java -jar my_script.jar
或my_script.exe
)轻松运行我的程序,或者将实用程序交给某些同事,但我不希望这样他们看到了源代码。
答案 0 :(得分:0)
有很多方法可以将.py转换为.exe和excetra
虽然我相信可以更改扩展名,但如果你使用python的扩展程序,这个过程会更容易和顺畅,就像Py2exe一样,下载可以通过简单的谷歌搜索找到(我还包括一个链接到他们的网站下面)。该程序将允许您将程序转换为.exe并将运行而无需安装python。
以下是信誉良好且选项良好的列表:http://www.freehackers.org/Packaging_a_python_program
我个人推荐Py2exe(http://www.py2exe.org/),可以在这里找到Py2exe的教程(http://www.py2exe.org/index.cgi/Tutorial)
答案 1 :(得分:0)
使用jar文件,Sikuli is written in Java and uses Jython。为了实现这一点,您需要做三件事。
首先获取sikuli-java.jar
文件(step-by-step instructions here),您可以通过下载sikuli-setup.jar
获取该文件,并使用选项4(仅Java)和6(所有OS兼容)运行它。这应该下载sikuli-java.jar
文件。
您可以使用Jython(full instructions here)编译Python:
$JYTHON_HOME/jython $JYTHON_HOME/Lib/compileall.py python_src/
其中python_src
是包含所有.py
个文件的目录。
然后,您可以使用包装类从Java调用这些编译文件(看起来像myFile$py.class
)(请参阅示例的完整说明)。
这个包装器调用一个Python方法,因此您可以将该方法作为主要的Python方法,启动程序的其余部分。
编译包装类:
javac -cp $JYTHON_HOME/jython.jar TestJ.java
jar cvfe myapp.jar <packageName>.TestJ *.class
其中<packageName>
是包装器TestJ.java
类的包。
您还需要将Jython添加到此jar中。只需按照下面“jar中的Python .py文件”部分的前几个步骤或download the standalone Jython jar进行操作,并在下面的“组合罐子”部分中以与sikuli-java.jar
相同的方式包含它。
现在您必须为脚本本身创建jar。 full instructions are here,但如果你想要摘要:
获取安装Jython时获得的
jython.jar
文件并将Jython Lib目录压缩到其中,然后压缩.py文件,然后使用启动逻辑添加__run__.py
文件(此文件由Jython特别处理,并且是使用java -jar
)调用jar时执行的文件。
如果您愿意,还可以从python.org获得more general guide。
注意:强>
上面的完整说明假设您拥有zip
程序。如果不这样做,则可以使用jar uvf jythonlib.jar Lib
代替zip -r jythonlib.jar Lib
(并且在使用zip
的地方执行类似操作)。 See here for more
您只需使用sikuli-java.jar
mentioned in the note above将jar
添加到包含脚本的jar中。如果您愿意,也可以combine the two jar files(也使用jar
)。
无论哪种方式,这应该给你一个jar文件,可以在任何具有兼容JVM的系统上运行你的Sikuli程序。使用
运行它java -jar myapp.jar
恭喜,你已经完成了!
如果您需要处理命令行参数,请参阅stack overflow guide或full Python guide,或者通常需要更多详细信息。