Python cx_Freeze 导入错误 : cannot import name 'idnadata'

标签 python python-3.x cmd importerror 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)

我在外部文件中运行该函数,然后将其构建到 cx_Freeze 的 setup.py 中。

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后:

build
+-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'

谁能解释一下为什么我会收到此错误?

最佳答案

更新:我发现手动将依赖项复制到构建的 lib 文件夹中解决了问题,因为它只复制了 idna 模块的一半。

关于Python cx_Freeze 导入错误 : cannot import name 'idnadata' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47911544/

相关文章:

python - 在 Python 中调用单独文件中的函数

python-3.x - 使用df索引范围的条件

python - 创建单行数据框

regex - 删除文件每行末尾的制表符

c++ - CMD.EXE 以上述路径作为当前目录启动。不支持 UNC 路径。默认为 Windows 目录

python - 使用 python 3.x 时,如何从 "for"命令获取输出并将它们添加到列表或字符串中?

python - 为什么在内存缓存上调用 get() 会增加 Google App Engine 中的项目数?

python - 如何从 xml 或 tcx 文件中获取数据系列

python - 创建指定数据点的列表或数组

batch-file - 批处理文件如何定位它所在的位置?