如何将pyinstaller捆绑.jar文件作为使用它们的python项目的归档文件?
例如,要创建一个exe(我使用pyjnius来处理sikuli-standalone jar):
# test.py
import os
import sys
# set the classpath so java can find the code I want to work with
sikuli_jar = '/sikuli-api.standalone-1.0.3-Pre-1.jar'
jarpath = os.path.dirname(os.path.realpath(__file__)) + sikuli_jar
os.environ['CLASSPATH'] = jarpath
# now load a java class
from jnius import autoclass
API = autoclass('org.sikuli.api.API')
Pyisntaller使用:
创建(一个文件夹)exe pyinstaller -d test.py
但据我所知,jar不是捆绑的,并且exe 无法访问,除非你手动将它放在Pyinstaller生成的文件夹中
“CArchive包含你想要的东西。它非常多 像.zip文件。“
然后尝试使用以下代码编辑以前自动生成的 test.spec
文件:
jar = 'sikuli-api.standalone-1.0.3-Pre-1.jar'
jar_path = 'C:\\Python27\\Lib\\site-packages\\sikuli-0.1-py2.7.egg\\sikuli\\' + jar
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
[('sikulijar', jar_path, 'PKG')],
strip=None,
upx=True,
name='test')
我尝试使用以下命令构建基于此spec文件的exe:
python C:\workspace\code\PyInstaller-2.1\PyInstaller\build.py --onefile test.spec
但没有任何反应,也没有错误返回。有人可以提供一个简单的分步教程如何做到这一点?非常感谢!
答案 0 :(得分:0)
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
[('sikulijar', jar_path, 'PKG')],
strip=None,
upx=True,
name='test')
将元组中的'sikulijar'更改为 jar (您已定义的变量)。您需要引用您在代码中使用的相同名称。
但是,我仍然试图让JVM正确初始化。如果我弄明白的话,我会张贴。
答案 1 :(得分:0)
在安装了有效的虚拟环境后,这就是我打包通过jnius与python互操作的jar的方法:
addFiles=" \
--add-data project/resources/jnius.so:jnius \
--add-data relative-path-to-jar.jar:resources \ # <-- example jar
--add-data any-other-resources:resources \
"
source ./venv/bin/activate
./venv/bin/pip install -r ./requirements.txt
./venv/bin/pyinstaller --onefile ${addFiles} project/mainModule.py --log-level WARN --hidden-import=jnius_config