gpt4 book ai didi

python - 命名空间理解

转载 作者:行者123 更新时间:2023-11-28 22:53:31 24 4
gpt4 key购买 nike

我在构建 Django 应用程序时遇到了一些导入问题。我的文件结构:

project/
my_app/
models/
__init__.py
Article.py
StockMovementProduct.py
tools/
__init__.py
Synchronizer.py

project/my_app/models/_init_.py:

from Article import *
from StockMovementProduct import *

project/my_app/models/Article.py:

from django.db import models

class Article(models.Model):
[...]

project/my_app/models/StockMovementProduct.py:

from django.db import models
from my_app.tools import Synchronizer

class StockMovementProduct(models.Model):
def sync_articles(self):
sync = Synchronizer(self)
[...]

project/my_app/tools/_init_.py 是空的

project/my_app/tools/Synchronizer.py:

from my_app.models import Article
from my_app.models import StockMovementProduct

class Synchronizer():
[...]

当我运行我的代码时,出现此错误:

  File "/home/bux/Projets/project/my_app/models/__init__.py", line 7, in <module>
from StockMovementProduct import *
File "/home/bux/Projets/project/my_app/models/StockMovementProduct.py", line 5, in <module>
from my_app.tools import Synchronizer
File "/home/bux/Projets/project/my_app/tools/Synchronizer.py", line 2, in <module>
from my_app.models import StockMovementProduct
ImportError: cannot import name StockMovementProduct

我不明白为什么(在 Synchronizer.py 中)Article 导入有效而 StockMovementProduct 导入无效。

在 Synchronizer.py 中我也尝试:

from my_app.models import Article
from ..models import StockMovementProduct

但没有成功。导入方法缺少什么?

最佳答案

您的代码中有循环导入,即您的 StockMovementProduct.py 导入 Synchronizer.pySynchronizer.py 导入 StockMovementProduct.py。这是一个很常见的问题,已经有很多帮助:Circular dependency in Python .

关于python - 命名空间理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19380928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com