2016-09-23 24 views
0

我最近使用pdfkit创建了一个应用程序,该应用程序接受用户输入的关键字并使用该关键字进行各种互联网搜索。然后它使用pdfkit生成每个单独搜索的pdf文件,并将它们保存到用户定义的目录中。使用py2app冻结使用pdfkit的python脚本时的问题

当我从终端运行代码时,一切都很正常,但是当我尝试使用py2app冻结脚本时,一切正常,直到它实际上保存pdf,应用程序完全没有任何操作。

我曾尝试包括在py2app用来创建应用程序的setup.py文件都pdfkit和wkhtmltopdf,但没有运气,我试图把它们列出下包括这样的部分:

'includes':['requests','pdfkit'] 

在包款:

'packages':['requests','pdfkit'] 

,甚至在下面的setup_requires部分:

setup_requires=['py2app', 'wkhtmltopdf'] 

但是,应用程序仍然没有做任何事情。我认为它与事实有关,即依赖不会转移到冷冻应用程序。不过,我开始重新考虑这一点,因为即使我在别名模式下创建应用程序(声称保留所有依赖项),也会发生同样的问题。

这是一个已知的问题?或者有人找到了解决方案。

非常感谢。我完全setup.py文件低于:

from setuptools import setup 

APP = ['pdtest.py'] 
DATA_FILES = [] 
OPTIONS = {'argv_emulation': False, 'includes':['requests','pdfkit'],'packages':['requests','pdfkit'], 'iconfile':'icon.icns'} 

setup(
    app=APP, 
    data_files=DATA_FILES, 
    options={'py2app': OPTIONS}, 
    setup_requires=['py2app', 'wkhtmltopdf'], 
) 

回答

0

好找到答案那么,谁是有同样的问题任何人都可以使用它。

基本上问题在于pdfkit只是模块WKHTMLTOPDF的包装。

因此,基本上所有发生在您调用PDFKIT时的情况是,它只是要求WKHTMLTOPDF为它做这项工作,但是由于某种原因,在我的系统上,脚本能够从它运行时找到WKHTMLTOPDF模块终端,但无法使用py2app转换为applet。

我需要怎么做正是告诉脚本,WKHTMLTOPDF位于,但首先你需要知道自己的信息,只需输入到终端:

which wkhtmltopdf 

,你应该得到的路径返回。如果你不这样做,那么也许你应该考虑先安装它,这通常是有帮助的。

然后,你需要在配置文件在那个地方的wkhtmltopdf模块看,所以只需添加到您的pdfkit脚本:

config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf') 

除后的“=”与任何路径替换路径早前该命令返回之后,每次你打电话pdfkit,你需要添加该配置,例如:。

normalpdf = pdfkit.from_url('URL, 'test.pdf',configuration = config) 

,并应解决的问题,希望它可以帮助