2017-08-31 19 views
0

こんにちは、Pythonコードの一部でcx-freezeを実行しているときに問題が発生しました。 cx-freezeによって生成された実行可能ファイルをクリックすると、常にエラーメッセージが表示されます。誰でも助けることができますか? - Python 3.6.1が使用されています。[Python] [cx-freeze] ImportError:名前 'ExcelFormulaParser'をインポートできません。

別のPythonコードでcx-freezeを実行してもうまくいきました。

エラーメッセージは以下の通りです:PYファイル内

Last login: Thu Aug 31 14:45:12 on ttys002 
EMacBook-Pro:~ E$ /Users/E/PycharmProjects/ImageRename/dist/exportImageName_1 ; exit; 
Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/cx_Freeze/initscripts/__startup__.py", line 14, in run 
    module.run() 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/cx_Freeze/initscripts/Console.py", line 26, in run 
    exec(code, m.__dict__) 
    File "exportImageName_1.py", line 1, in <module> 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/xlwt/__init__.py", line 4, in <module> 
    from .Worksheet import Worksheet 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/xlwt/Worksheet.py", line 38, in <module> 
    from .Row import Row 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/xlwt/Row.py", line 8, in <module> 
    from . import ExcelFormula 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/xlwt/ExcelFormula.py", line 3, in <module> 
    from . import ExcelFormulaParser, ExcelFormulaLexer 
ImportError: cannot import name 'ExcelFormulaParser' 
logout 
Saving session... 
...copying shared history... 
...saving history...truncating history files... 
...completed. 

[进程已完成] 

ソースコードは:

import xlwt 
import os 
import FileDirectory_1 


def walk_dir(dir): 
    rowindex = 1 
    for root, dirs, files in os.walk(dir): 
     for f in files: 
      if "jpg" in f: 
       table.write(rowindex,0, root) 
       table.write(rowindex,1, f) 
       # print(os.path.join(root,f)) 
       rowindex += 1 


dir = FileDirectory_1.DIR; 
excelName = "imageRename.xls" 

# =======Excel Style============ 
style = xlwt.XFStyle() 
font = xlwt.Font() 
font.name = "Arial" 
font.bold = True 
style.font = font 
# ============================== 


file = xlwt.Workbook() 
table = file.add_sheet("ImageRename", cell_overwrite_ok=True) 
table.write(0, 0, "Old File Path", style) 
table.write(0, 1, "Old Image Name", style) 
table.write(0, 2, "New Image Name", style) 

walk_dir(dir) 

file.save(os.path.join(dir, excelName)) 
print(excelName, " has been generated.") 

答えて

1

問題を発見しました。私はcx-freezeによって生成された/ lib/xlwtフォルダ内のファイルをチェックし、 "ExcelFormulaParser.pyc"と "ExcelFormulaLexer.pyc"ファイルが何とか見当たりませんでした。 「ExcelFormulaParser.py」と「ExcelFormulaLexer.py」ファイルを追加した後、問題は解決されました。これらの2つのファイルは、自分のxlwtファイルからサイトパッケージからビルドフォルダにコピーされました。

+0

私はこの同じ問題を抱えています。これらの2つのファイルをどのように追加しましたか、どこから取得しましたか? – MattR

+0

私も問題を解決しました。私の提案は、他の人が遭遇したことに対するあなたの答えを編集し、それを受け入れたものとしてマークすることです。あなたは、あなたの個人的なxlwtファイルをsite-packagesからあなたのビルドフォルダにコピーすることを言及してください。 – MattR

+0

ありがとう、私は答えを受け入れることはできませんでした。 – rubyknownothing

関連する問題