所以我对Python很陌生。我一直在用一个类似于我希望自己构建的代码运行(所以是一个参考代码(。除了我需要用无效语法解决的一些错误外,除了我拥有的一个特定.py
文件的一个问题外,所有这些似乎都能正常工作。
我的结构是这样的:
MoodForecasting -> eval -> nsga_two.py
不过,我在eval文件夹中确实有_init_.py
,所以我不确定为什么这段代码不起作用。
我正试图从中加载一个特定的函数,所以结构应该看起来像这个
from nsga_two import PatientProblem
不幸的是,我一直收到错误ModuleNotFoundError: No module named 'nsga_two'
。
我检查了nsga_two.py
本身,发现它无法加载inspyred
。我进去解决了这个问题。因此,nsga_two.py
本身运行良好。但是,我无法将它导入到我将要使用的主脚本中。
一些额外的细节:我正在使用带有Python自定义版本3.7.9的IDESpyder
。
我不确定这是否是Spyder的问题,也不确定我是如何在工作目录中加载的。(我的大部分编码经验都在MatLab和R中,因此拥有类似于RStudio和MatLab的IDE是我选择在Spyder工作的原因(
编辑:我在使用from eval import nsga_two.PatientProblem
时出现语法错误。Python不喜欢那个时期。所以,我试着不经期。我拿到了error cannot import name 'nsga_twoPatientProblem' from 'eval' (C:UsersnameDesktopMoodForecasting-masterMoodForecasting-mastereval__init__.py)
。我不知道为什么。但做from eval import nsga_two
是有效的。CCD_ 11仅由CCD_ 12组成。这个解决方案应该可以用于此目的。我只是不知道为什么会发生这种事。
假设您的结构如下:
MoodForecasting-master/
main.py
eval/
__init__.py
nsga_two.py
当您运行主脚本来导入某些内容时,该脚本的目录将添加到模块搜索路径sys.path
,在本例中为.../MoodForecasting-master/
。from nsga_two import PatientProblem
引发了ModuleNotFoundError
,因为nsga_two.py
不在该目录中。
正如Iguananaut所说,from eval import nsga_two.PatientProblem
在第一条评论中从来都不是一个有效的声明。这样做的有效方法是:
- 通过
from eval import nsga_two
导入并用作nsga_two.PatientProblem()
- 由
from eval.nsga_two import PatientProblem
导入,直接作为PatientProblem()
使用
模块搜索从.../MoodForecasting-master/
开始,第一个选项转到.../MoodForecasting-master/eval/
以查找nsga_two.py
,第二个选项转至.../MoodForecasting-master/eval/nsga.py
以查找名为PatientProblem
的属性。
正确的语法是:
来自package.module导入函数
所以:
从eval.nsga_toon导入PatientProblem