使用 cx_freeze 构建的 Exe 会为所需的包产生“找不到模块”错误

Posted

技术标签:

【中文标题】使用 cx_freeze 构建的 Exe 会为所需的包产生“找不到模块”错误【英文标题】:Exe built with cx_freeze produces "module not found" errors for required package 【发布时间】:2017-08-06 17:56:55 【问题描述】:

我使用 Python 制作了一个 twitter 机器人,它使用了 tweepy 模块。然后,我按照these 的说明,使用 cx_Freeze 将 Python 文件转换为 .exe 文件。如果我在 Powershell 中将程序作为 Python 文件运行,则一切正常,但是当我尝试在命令提示符下运行 .exe 文件时,出现以下错误:

 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 "twitterbot_retweet_recent_tweets_2.py", line 1, in <module>
ModuleNotFoundError: No module named 'tweepy'

我已经尝试再次卸载并重新安装 tweepy,但我不断收到同样的错误。有谁知道如何解决这个问题?

【问题讨论】:

我对 cx_Freeze 不熟悉,只是在这里简单介绍一下 -- 你在 setup.py 文件中正确引用了 tweepy 包吗? @DougCoburn 否。在 setup.py 文件中,我所拥有的软件包是:packages = ["idna"] options = 'build_exe': 'packages':packages, , @DougCoburn 我必须以某种方式添加它吗? 我试试看:cx-freeze.readthedocs.io/en/latest/distutils.html @DougCoburn 是的!非常感谢您的帮助!!!!!! 【参考方案1】:

有时自动依赖检测不起作用。将缺少的包依赖项添加到 setup.py 中的 build_exe 选项

# Add tweepy, queue here
packages = ["idna", "tweepy", "queue"]
options = 
    'build_exe': 
        'packages':packages,
    ,

【讨论】:

以上是关于使用 cx_freeze 构建的 Exe 会为所需的包产生“找不到模块”错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 cx_freez 构建 exe 时出错

使用 cx_Freeze 从 .py 构建一个 .exe 文件

cx_freeze 将项目构建为 .exe 文件,出现 numpy 导入错误

cx_freeze exe 与 numpy 有问题

使用 cx_Freeze - 如何在 .exe 中包含所有必要的文件?

使用 cx_Freeze、PyQt5、Python3 构建的 exe 无法导入 ExtensionLoader_PyQt5_QtWidgets.py 并运行