2017-12-20 6 views
0

私は下に、テキストを言うために簡単なスクリプトを作った:私は外部ファイル内の関数を実行し、CX凍結のためのsetup.pyにそのを構築Pythonのcx_freezeインポートエラー

from gtts import gTTS 
import os 
import random 
from playsound import playsound 

def say(voice_text, capitalize = True): 

    voice = gTTS(text = (voice_text), lang = "en") 
    fileName = "%d.mp3" %random.randint(1, 999999999) 
    voice.save(fileName) 
    if capitalize == True: 
     print(voice_text.capitalize()+"...") 
    else: 
     print(voice_text+"...") 

    playsound(fileName) 

    os.remove(fileName) 

from cx_Freeze import setup, Executable 

executables = [ 
    Executable('main.py', 
       shortcutName="test", 
       shortcutDir="DesktopFolder", 
       icon="icon.ico") 
] 

setup(name='hello', 
     version='0.1', 
     description='Sample cx_Freeze script', 
     executables=executables 
    ) 

上記のコードはセットアップ用です。 以下のexeファイルを実行した後: ビルド
+ -exe.win-amd64-3.6
| -main.exe これをcmdで実行すると、このエラーが発生します。

Traceback (most recent call last): 
    File "C:\Python36\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run 
    module.run() 
    File "C:\Python36\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run 
    exec(code, m.__dict__) 
    File "main.py", line 1, in <module> 
    File "C:\Users\name\Desktop\pyExe test\other.py", line 2, in <module> 
    from say import say 
    File "C:\Users\name\Desktop\pyExe test\say.py", line 1, in <module> 
    from gtts import gTTS 
    File "C:\Python36\lib\site-packages\gtts\__init__.py", line 2, in <module> 
    from .tts import gTTS 
    File "C:\Python36\lib\site-packages\gtts\tts.py", line 2, in <module> 
    import re, requests, warnings 
    File "C:\Python36\lib\site-packages\requests\__init__.py", line 98, in <module> 
    from . import packages 
    File "C:\Python36\lib\site-packages\requests\packages.py", line 7, in <module> 
    locals()[package] = __import__(package) 
    File "C:\Python36\lib\site-packages\idna\__init__.py", line 2, in <module> 
    from .core import * 
    File "C:\Python36\lib\site-packages\idna\core.py", line 1, in <module> 
    from . import idnadata 
ImportError: cannot import name 'idnadata' 

なぜこのエラーが発生するのですか?

答えて

2

更新:ビルドのlibフォルダに依存関係を手動でコピーすると、idnaモジュールの半分しかコピーされないため、問題が解決されています。

関連する問題