当我们从GitHub下载代码在pycharm中运行时,会出现这样的情况。
这里我做了个清晰的文件夹结构示例。如下:(仅示例包在同一文件夹的情况,对于包在不同文件夹的情况,如果出现报错,类似解决。)
可以看到在项目文件夹下存在两个新的文件夹,而不是直接存放可运行的py文件。例如我们需要运行CAdensenet_models.py,他需要导入注意力模块CAatt.py。这个模块是自定义模块而不是python库中的模块。可以看到两者明明在同一文件夹目录下,但是却提示没有找到模块。另外,有些项目的依赖关系复杂,包在不同的文件夹,需要跨文件夹导入自定义的包,也可以通过该方法解决。
解决办法:
① 打开pycharm的设置界面。选择项目结构
② 将“要复现的代码文件夹”标记为源代码。点击确定。
如此就完成了。
可以先重启pycharm,之后点击运行不再报错。
原因分析:
python在执行代码时默认从主文件夹(源代码)的子目录中检索文件,然而嵌套的文件夹结构使得python只能找到子文件夹,而不能看到子文件夹下的文件。除非跟主文件夹一样把子文件夹加到python的搜索路径中。这样就可以正确找到自定义模块而不报错了。
在打开pycharm后,点击控制台,会出现如下代码,也就是很多教程说的添加到检索源文件操作。哈哈,其实pycharm内置了该功能,就是本文的做法。你会发现设置为源代码后,控制台会把它加到检索源文件。