从不同目录的不同脚本导入变量时出错

Error when importing variable from different script from different directory

我正在做一个项目,我在 Python 中训练神经网络并使用 GUI 显示信息。但是,我在导入模块方面一直存在问题。这是我在尝试 运行 Visualizer.Main

时遇到的错误
Traceback (most recent call last):

File "/home/user/SplineTrajectoryGenerator/Visualizer/Main.py", line 3, in <module>

from Visualizer.Field import Field

File "/home/user/SplineTrajectoryGenerator/Visualizer/Field.py", line 3, in <module>

from Visualizer.Utils import loadImage

File "/home/user/SplineTrajectoryGenerator/Visualizer/Utils.py", line 3, in <module>

from NeuralNetworks.Pose import Pose2D

File "/home/user/SplineTrajectoryGenerator/NeuralNetworks/Pose.py", line 4, in <module>

from Visualizer.Utils import constraint

ImportError: cannot import name 'constraint'

然而,奇怪的是变量存在并且可以在Visualizer文件夹中的Utils.py中找到。有人告诉我使用 _init__.py 允许将目录用作模块以从其他目录中的脚本导入方法和 类。我仍然对变量存在时为什么会发生此错误感到困惑。作为参考,所有文件的树如下所示。

.

├── NeuralNetworks

│   ├── __init__.py

│   ├──Main.py

│   └──Pose.py

├──README.md

└── Visualizer

├── Assets

│   ├── Field.png

│   └── Robot.png

├──Field.py

├── __init__.py

├──Main.py

├──Robot.py

└──Utils.py

如果您需要查看脚本,我已将整个文件夹附在下面link。任何帮助将不胜感激。

您似乎在 Visualizer.Utils 和 NeuralNetworks.Pose 之间存在循环依赖`:

from Visualizer.Utils import loadImage

File "/home/user/SplineTrajectoryGenerator/Visualizer/Utils.py", line 3, in

from NeuralNetworks.Pose import Pose2D

File "/home/user/SplineTrajectoryGenerator/NeuralNetworks/Pose.py", line 4, in

from Visualizer.Utils import constraint

Python 不支持循环依赖 - 这实际上是一个 GoodThing(tm),因为这些是设计问题(两个模块不应相互依赖)。规范的解决方案是为两个模块都需要的对象(类、函数等)创建一个新模块(即在您的情况下为 'constraint' 创建一个不同的模块)。