我刚开始在 Python 中使用 Sikuli 编写一些脚本。
我想知道是否可以(如果可以,如何)从我的 python 脚本(文件 .py 和图像)创建 jar 或 exe 文件。
我想轻松地从其他没有安装 sikuli 的机器上运行我的程序(例如,java -jar my_script.jar
或my_script.exe
),或者将实用程序提供给一些同事,但我不希望他们看到源代码。
我刚开始在 Python 中使用 Sikuli 编写一些脚本。
我想知道是否可以(如果可以,如何)从我的 python 脚本(文件 .py 和图像)创建 jar 或 exe 文件。
我想轻松地从其他没有安装 sikuli 的机器上运行我的程序(例如,java -jar my_script.jar
或my_script.exe
),或者将实用程序提供给一些同事,但我不希望他们看到源代码。
有很多方法可以将 .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 )
使用 jar 文件,因为Sikuli 是用 Java 编写的并使用 Jython。您需要做三件事才能使其正常工作。
首先获取可以通过下载获取的sikuli-java.jar
文件(此处为分步说明sikuli-setup.jar
),然后使用选项 4(仅限 Java)和 6(所有操作系统兼容)运行它。这应该下载sikuli-java.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 cvfe myapp.jar <packageName>.TestJ *.class
<packageName>
包装TestJ.java
类的包在哪里。
您还需要将 Jython 添加到此 jar 中。只需按照下面“jar 中的 Python .py 文件”部分的前几个步骤操作,或下载独立的 Jython jar并将其包含sikuli-java.jar
在下面的“组合 jars”部分中。
现在您必须为脚本本身创建 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 文件(也可以使用)。jar
jar
无论哪种方式,这都应该为您提供一个 jar 文件,该文件可以在具有兼容 JVM 的任何系统上运行您的 Sikuli 程序。运行它使用
java -jar myapp.jar
恭喜,你完成了!
如果您需要处理命令行参数,或者通常需要更多详细信息,请参阅堆栈溢出指南或完整的 Python 指南。