我有一个奇怪的问题。
主要问题:
我的.py文件以前可以正常运行3个小时,现在无法导入任何外部模块。我仍然可以从Spyder(类似于PyCharm编辑器)和带有python run.py
的CMD中运行它们。但是,单击时,出现错误ModuleNotFoundError: No module named ModuleName
。但是,在运行其他所有模块时都可以找到该模块,该模块位于Anaconda库中。该文件夹没有任何许可限制,并且不仅是一个文件,还是导入外部模块的任何.py文件。
起初,我认为这可能是一个小问题,因为我刚刚更新为第18小点,但是即使回撤到10.0.1小问题仍然存在。
[EDIT]:我已经尝试过制作PyInstaller .exe,并且仍然可以按预期工作,但是该应用程序仍无法与cx_freeze一起使用,即使它在几个小时前就已使用过fez。
背景故事: 我在玩PyInstaller和Cx_Freeze将我的应用程序变成可执行文件。
我有自己的工作.py文件,可以在Anaconda的Spyder应用程序中进行编辑和测试。
所以我正在测试可执行文件,它们可以正常工作,就像我的python代码一样。 Pyinstaller独立版本和cx_freeze应用程序可以正常运行。
因此,我在主.py文件中进行了一些更改(只是删除了print('')就没什么疯狂的),重用cx_freeze,然后在某个时候开始为我的cx_freezed应用程序创建安装向导。
这一切都很好,除了在运行应用程序时,cmd提示仅会关闭。
我认为“很奇怪”,我在Spyder中测试了.py文件,它工作正常,所以我将cmd上的内容截图了:ModuleNotFoundError: No module named ModuleName
,所以我认为向导安装程序存在问题,因此我尝试使用原始安装程序.exe文件,相同错误。因此,我尝试使用.py文件,但出于同样的错误,我仔细检查了模块,然后重新成功安装,错误仍然存在。
因此,我尝试运行我确定可以正常运行的备份,并且在其中没有进行任何编辑,现在出现了相同的错误。
这真的很烦人,因为我想制作该应用程序的.exe,并设法使其消失了
答案 0 :(得分:3)
您可以尝试以下方法。 添加此代码可以从系统路径中打印出来。
import sys
from pprint import pprint
pprint(sys.path)
这应该告诉您可以从中加载模块的所有路径。如果您的文件不在其中一个路径中,则不会加载该文件。
有关更多信息,您可以使用-v
标志运行python,它将详细地通知您python启动时的情况以及尝试加载模块时的情况。您也许可以收集有关出问题的信息。
答案 1 :(得分:1)
当您从.py转换为.exe时,我认为您使用了错误的版本。通常,CMD使用ENV变量中的任何内容,因此只需确保所有版本号都相同。