来自 Sikuli python 脚本的 jar 或 exe 文件

jar or exe file from Sikuli python script

我刚开始在 Python 中使用 Sikuli 编写一些脚本。

我想知道是否可以(如果可以,如何)从我的 python 脚本(文件 .py 和图像)创建 jar 或 exe 文件。

我想从其他没有安装 sikuli 的机器(例如,java -jar my_script.jarmy_script.exe)轻松 运行 我的程序,或者将实用程序提供给一些同事,但是我不希望他们看到源代码。

有很多方法可以将 .py 转换为 .exe 和 excetra

虽然我相信可以更改扩展名,但如果您使用 python 的扩展名,这个过程会更容易和更顺利,就像 Py2exe 一样,可以通过简单的 google 搜索(我还在下面的网站中添加了 link)。该程序将允许您将程序转换为 .exe,并且 运行 无需 python 安装。

以下是信誉良好的优质选项列表:http://www.freehackers.org/Packaging_a_python_program

个人比较推荐Py2exe(http://www.py2exe.org/) and the tutorial to Py2exe can be found here (http://www.py2exe.org/index.cgi/Tutorial)

使用 jar 文件,如 Sikuli is written in Java and uses Jython。您需要做三件事才能使其正常工作。

获取 Sikuli 罐子:

首先获取 sikuli-java.jar 文件(step-by-step instructions here), which you can get by downloading sikuli-setup.jar,然后 运行 使用选项 4(仅 Java)和 6(所有 OS 兼容) . 这应该下载 sikuli-java.jar 文件。

将您的脚本本身作为 jar 分发:

混淆版本:

您可以使用 Jython (full instructions here) 编译您的 Python:

$JYTHON_HOME/jython $JYTHON_HOME/Lib/compileall.py python_src/

其中 python_src 是包含所有 .py 文件的目录。

然后您可以使用包装器 class 从 Java 调用这些编译文件(看起来像 myFile$py.class)(有关示例,请参阅完整说明)。 此包装器调用单个 Python 方法,因此您可以将该方法作为启动程序其余部分的主要 Python 方法。

编译包装器class:

javac -cp $JYTHON_HOME/jython.jar TestJ.java

然后jar all your .class files:

jar cvfe myapp.jar <packageName>.TestJ *.class

其中 <packageName> 是包装器的包 TestJ.java class.

您还需要将 Jython 添加到此 jar。只需按照下面“Python jar 中的 .py 文件”部分的前几个步骤,或 download the standalone Jython jar 并以与下面“合并 jars”部分中的 sikuli-java.jar 相同的方式包含它.

Python jar 中的 .py 文件:

现在您必须为脚本本身创建 jar。 full instructions are here,但如果你想要一个摘要:

Take the jython.jar file that you get when you install Jython and zip the Jython Lib directory into it, then zip your .py files in, and then add a __run__.py file with your startup logic (this file is treated specially by Jython and will be the file executed when you call the jar with java -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 添加到包含您的脚本的 jar 中,使用 jar 作为 mentioned in the note above. You can also combine the two jar files(也可以使用 jar)。

无论哪种方式,这都应该为您提供一个 jar 文件,该文件可以 运行 您的 Sikuli 程序跨任何具有兼容 JVM 的系统。 运行 它使用

java -jar myapp.jar

恭喜,大功告成!

如果您需要处理命令行参数,或者通常需要更多详细信息,请参阅stack overflow guide or the full Python guide