当前位置: 首页 > 知识库问答 >
问题:

如何包括具体的内容。可执行文件中包含pyinstaller的jar文件?

端木狐若
2023-03-14

如何强制pyinstaller使用特定的。打包为exe时的jar文件?

我正在尝试生成一个使用tabla-py-lib的可执行文件。这个库需要一个jar文件tabla-1.0.1-jar-with-dependencies。jar,我的文件中有。py文件夹。这些是myfile中的一些修改。规格:

# this is for pandas lib
def get_pandas_path():
    import pandas
    pandas_path = pandas.__path__[0]
    return pandas_path

dict_tree = Tree(get_pandas_path(), prefix='pandas', excludes=["*.pyc"])
a.datas += dict_tree
a.binaries = filter(lambda x: 'pandas' not in x[0], a.binaries)

# this is for tabula-py
jar = 'tabula-1.0.1-jar-with-dependencies'
jar_path = 'C:\\Users\\jaquedeveloper\\Documents\\freelancer\\bot\\' + jar
coll = COLLECT(exe,
       a.binaries,
       a.zipfiles,
       a.datas,
       [(jar, jar_path, 'PKG')],
       strip=None,
       upx=True,
       name='test')

然而,错误仍然存在。当我从命令行运行我的代码时,函数read_pdf(),来自tabula-py,它使用java jar,工作正常,完美。

但是,当我使用pyinstaller spec命令生成可执行文件时,它无法执行此函数,错误如下:

无法访问jar文件C:\Users\jaquedeveloper\AppData\Local\Temp\u MEI58442\tabla\tabla-1.0.1-jar-with-dependencies。罐子

该文件不在此文件夹下,也不存在Tabula文件夹。我有文件在可执行文件的同一文件夹下。我如何强制脚本使用它?如何将jar从特定路径导入到可执行文件,而不是使用_MEI文件夹?

这个问题也报告在这里。

共有1个答案

施梓
2023-03-14

我不久前偶然发现了这条线索,因为我遇到了完全相同的问题。添加。使用pyinstaller将jar文件转换为“onefile”可执行文件似乎将其放在了错误的临时目录下-在。。。AppData\Local\Temp\u MEI58442\tabla\tabla-1.0.1-jar-with-dependencies。罐子添加的文件似乎位于。。。AppData\Local\Temp_MEI58442\tabla-1.0.1-jar-with-dependencies。罐子这就是为什么在执行tabla时找不到它。read_pdf()命令。作为一种解决方法,我使用pyinstaller(而不是onefile)生成了一个onedir输出,并使用jar文件添加了一个目录'tabla',它成功了。

将其捆绑到单个文件中也很有效:它实际上都在pyinstaller文档中(https://pyinstaller.readthedocs.io/en/stable/usage.html).添加二进制文件时。jar文件对于Linux和“;”您可以在“:”之后指定临时文件夹中文件的相对路径用于Win系统。仅使用“.”当路径将文件放置在下面时/临时梅*/。所以在我的Win案例中,它看起来是这样的:

pyinstaller --onefile --add-binary "C:/Users/Louis/Desktop/Github/pdf_reader/venv/Lib/site-packages/tabula/tabula-1.0.2-jar-with-dependencies.jar;./tabula/" myapp.py

这个解决方案来得有点晚,但我希望它仍然能帮助一些人。

 类似资料:
  • 问题内容: 大家好,菜鸟Java问题。 我有一个Java项目,并且想在可执行jar中包含一个文本文件。现在,该文本文件位于默认程序包中。 InputFlatFile currentFile =新的InputFlatFile(“ src / theFile.txt”); 正如您使用src所看到的那样,我使用该行抓取文件。但是,这不适用于可执行jar。 有人可以让我知道如何将文件保存在可执行jar中,

  • 我还使用tkinter用Python3.7编写了一个程序。因为我使用的是外部图片,所以当我将所有内容编译成一个exe时,我需要包含它们。我尝试过执行,但仍然出现以下错误: _特金特。Tcl错误:无法打开“files/bg.png”:没有这样的文件或目录 代码如下: 我做错了什么?我也尝试过添加二进制文件,将该文件添加到我的spec文件中。我真的搞不懂!

  • 我需要创建一个应用程序,使用各种参数,如高度,体积或基础面积排序各种类型的多边形。将通过命令行传递具有多边形参数、排序类型参数、排序方法参数的文件名的参数。该文件位于项目中的“我的资源”文件夹中的“我的src”文件夹之外。我已经实现了所有的程序,当我通过eclipse运行配置使用pass参数运行时,它工作得很好。但是当我尝试使用cmd相同的参数运行我的.jar文件时,它给出了。 我使用打开了我的j

  • 本文向大家介绍Eclipse 导出可执行Java工程/可执行Jar文件(包含第三方Jar包),包括了Eclipse 导出可执行Java工程/可执行Jar文件(包含第三方Jar包)的使用技巧和注意事项,需要的朋友参考一下 Eclipse导出可执行Java工程/可执行Jar文件(包含第三方Jar包) 师兄部署了新的虚拟机,新学期大搞起来!之前由于爬虫代码不稳定,所以一直都是直接用Eclipse运行,然

  • 我正在处理一个作为可执行jar运行的Spring Boot应用程序。在我的代码中,我试图检索运行的jar文件所在的文件夹。但是我发现了一些困难。我这样做了: 问题是,通过这种方式,打印输出是这样的: 这不是我所需要的,因为我需要包含jar文件的目录路径,int这个例子是这样的:/home/andrea/git/notartel-api-batch/target/ 怎么了?我错过了什么?如何尝试修复

  • 我正在尝试加入一些。txt。png和其他文件转换为我的jar文件。我在src文件夹下创建了一个名为“resources”的文件夹。从IDE运行程序时,程序可以正确找到所有文件。但是,只要我用代码创建一个jar文件,就找不到任何文件。当然,我使用了getClass()。getResource(…)。 有人能帮我吗?:/