2

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 で)記事のインポートが機能し、StockMovementProductのインポートが機能しない理由がわかりません。

Synchronizer.py では、次のことも試します。

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

しかし、成功せずに。インポート方法論に欠けているものは何ですか?

4

2 に答える 2

2

コードに循環インポート、つまりStockMovementProduct.pyインポートSynchronizer.pyとまだSynchronizer.pyインポートがありStockMovementProduct.pyます。これはかなり一般的な問題であり、すでに多くのヘルプがあります: Python の循環依存関係

于 2013-10-15T12:19:16.233 に答える
2

循環インポートがあります。StockMovementProduct は Synchronizer をインポートし、Synchronizer は StockMovementProduct をインポートします。

構造を再構築し、共通の依存関係を 3 番目のファイルに移動する必要があります。内容を知らずに解決策を提案することは困難ですが、

于 2013-10-15T12:19:34.687 に答える