How To Bundle .jar Files with Pyinstaller

六眼飞鱼酱① 提交于 2019-12-12 12:19:27

问题


How do you get pyinstaller to bundle .jar files as archives for a python project that utilizes them?

For instance, to make an exe with (I am using pyjnius for handling the 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 creates the (one folder) exe with:

pyinstaller -d test.py

But the jar to the best of my knowledge is not bundled and is inaccessible to the exe unless you manually place it in the folder generated by Pyinstaller

According to the Pyinstaller manual:

"CArchive contains whatever you want to stuff into it. It's very much like a .zip file."

I then try editing the previously auto-generated test.spec file with:

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')

And I try building the exe based on this spec file with:

python C:\workspace\code\PyInstaller-2.1\PyInstaller\build.py --onefile test.spec

But nothing happens and no error returns. Can someone provide a simple step by step tutorial how this could be done? Many thanks!


回答1:


coll = COLLECT(exe,
           a.binaries,
           a.zipfiles,
           a.datas,
           [('sikulijar', jar_path, 'PKG')],
           strip=None,
           upx=True,
           name='test')

change 'sikulijar' in the tuple to just jar (the variable that you have already defined). you need to reference the same name that you have used in code.

However, I'm still trying to get the JVM to initialize properly. I'll post that if I figure that out.



来源:https://stackoverflow.com/questions/24049391/how-to-bundle-jar-files-with-pyinstaller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!