1

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

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

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

4

2 回答 2

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 )

于 2017-11-08T20:46:49.890 回答
0

使用 jar 文件,因为Sikuli 是用 Java 编写的并使用 Jython。您需要做三件事才能使其正常工作。

获取 Sikuli 罐子:

首先获取可以通过下载获取的sikuli-java.jar文件(此处为分步说明sikuli-setup.jar),然后使用选项 4(仅限 Java)和 6(所有操作系统兼容)运行它。这应该下载sikuli-java.jar文件。

将脚本本身作为 jar 分发:

混淆版本:

您可以使用 Jython 编译您的 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你的所有.class文件

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

<packageName>包装TestJ.java类的包在哪里。

您还需要将 Jython 添加到此 jar 中。只需按照下面“jar 中的 Python .py 文件”部分的前几个步骤操作,或下载独立的 Jython jar并将其包含sikuli-java.jar在下面的“组合 jars”部分中。

jar 中的 Python .py 文件:

现在您必须为脚本本身创建 jar。完整的说明在这里,但如果你想要一个摘要:

获取安装 Jython 时获得的jython.jar文件并将 Jython Lib 目录压缩到其中,然后将 .py 文件压缩到其中,然后添加一个__run__.py包含您的启动逻辑的文件(该文件由 Jython 特殊处理,将是执行的文件当你用java -jar) 调用 jar 时。

如果您愿意,还有来自 python.org的更通用的指南。

注意:
上面的完整说明假设您拥有该zip程序。如果你不这样做,你可以使用jar uvf jythonlib.jar Lib代替zip -r jythonlib.jar Lib(并且在使用的地方做类似的事情zip)。看这里了解更多

合并罐子

您可以使用上面注释中提到的方法简单地添加sikuli-java.jar到包含您的脚本的 jar 中。如果您愿意,还可以组合这两个 jar 文件(也可以使用)。jarjar

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

java -jar myapp.jar

恭喜,你完成了!

如果您需要处理命令行参数,或者通常需要更多详细信息,请参阅堆栈溢出指南完整的 Python 指南。

于 2017-11-08T21:19:01.210 回答