2011-07-22 47 views
4

我捆綁了一個使用py2exe編寫的使用python編寫的小腳本。該腳本使用了很多軟件包,其中一個是reportlab。 使用py2exe綁定後我試圖運行可執行文件,它返回以下錯誤:使用py2exe綁定時導入錯誤

C:\Python26\dist>DELchek.exe 
Traceback (most recent call last): 
File "DELchek.py", line 12, in <module> 
File "reportlab\pdfgen\canvas.pyc", line 25, in < 
File "reportlab\pdfbase\pdfdoc.pyc", line 22, in 
File "reportlab\pdfbase\pdfmetrics.pyc", line 23, 
File "reportlab\pdfbase\_fontdata.pyc", line 158, 
ImportError: No module named _fontdata_enc_winansi 

但我可以看到在ReportLab的文件夾中的「_fontdata_enc_winansi」模塊。有人可以幫我解決這個問題。

回答

12

我在過去用py2exe打包reportlab時遇到了同樣的問題。它動態地導入一堆模塊,py2exe在組裝依賴關係時無法識別。蠻力解決方法是直接在代碼中導入所需的模塊:

from reportlab.pdfbase import _fontdata_enc_winansi 
from reportlab.pdfbase import _fontdata_enc_macroman 
from reportlab.pdfbase import _fontdata_enc_standard 
from reportlab.pdfbase import _fontdata_enc_symbol 
from reportlab.pdfbase import _fontdata_enc_zapfdingbats 
from reportlab.pdfbase import _fontdata_enc_pdfdoc 
from reportlab.pdfbase import _fontdata_enc_macexpert 
from reportlab.pdfbase import _fontdata_widths_courier 
from reportlab.pdfbase import _fontdata_widths_courierbold 
from reportlab.pdfbase import _fontdata_widths_courieroblique 
from reportlab.pdfbase import _fontdata_widths_courierboldoblique 
from reportlab.pdfbase import _fontdata_widths_helvetica 
from reportlab.pdfbase import _fontdata_widths_helveticabold 
from reportlab.pdfbase import _fontdata_widths_helveticaoblique 
from reportlab.pdfbase import _fontdata_widths_helveticaboldoblique 
from reportlab.pdfbase import _fontdata_widths_timesroman 
from reportlab.pdfbase import _fontdata_widths_timesbold 
from reportlab.pdfbase import _fontdata_widths_timesitalic 
from reportlab.pdfbase import _fontdata_widths_timesbolditalic 
from reportlab.pdfbase import _fontdata_widths_symbol 
from reportlab.pdfbase import _fontdata_widths_zapfdingbats 

一個搜索也表明桑卡爾發現another solution,這包括在安裝腳本以下軟件包:

packages=[ 
    'reportlab', 
    'reportlab.graphics.charts', 
    'reportlab.graphics.samples', 
    'reportlab.graphics.widgets', 
    'reportlab.graphics.barcode', 
    'reportlab.graphics', 
    'reportlab.lib', 
    'reportlab.pdfbase', 
    'reportlab.pdfgen', 
    'reportlab.platypus', 
], 
+0

謝謝,這幫了我很多! – snowflake

+2

這也解決了我在導入PISA時使用pyinstaller的問題 – mdd061000

2

跳過圖形,如果你不使用它們...

packages= [ 
    'reportlab', 
    'reportlab.lib', 
    'reportlab.pdfbase', 
    'reportlab.pdfgen', 
    'reportlab.platypus', 
] 

setup(name='pitman', 
    version='1.0', 
    author='cue', 
    data_files = dataFiles, 
    console=['xxx.py', 'yyy.py'],  # change to windows=[...] 
    options = { 
     "py2exe": { "dll_excludes": ["MSVCP90.dll"], 
        "packages": packages, 
        "includes": includes } 
        } 
)