2011-07-22 8 views
4

py2exeを使用してPythonで書かれた小さなスクリプトをバンドルしました。スクリプトは多くのパッケージを使用し、そのうちの1つは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 

検索もSankarのセットアップスクリプトに次のパッケージを含めている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 } 
        } 
) 
関連する問題