2016-09-23 25 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) 

,並應解決的問題,希望它可以幫助