私はクラス「JCheq」を持っていて、静的varは 'logger'です。このPythonインポート循環参照を解決するには
JCheqインポートモジュールprinting_systems
ですが、JCheq.logger
をprinting_systems
から使用する必要があります。
import JCheq
をprinting_systems.py
に書き込んだ後で、コードがコンパイルされません。
jcheq.py
from printing_systems import printing_systems
from logger import logger
class JCheq:
logger = logger.Logger('logs/jcheq.log', loglevel=logger.Logger.INFO)
def __init__(self):
pass
...
printing_systems/printing_systems.py
from jcheq import JCheq
class WinLPR:
def __init__(self):
pass
@staticmethod
def send(spool, params):
temp_dir = tempfile.mkdtemp()
try:
JCheq.logger.log('Creando archivo temporal en dir: ' + temp_dir, logger.Logger.TRACE)
エラートレース:
Traceback (most recent call last):
File "/home/jsivil/Desktop/Proyectos/UNPAZ/jcheq/jcheq/jcheq.py", line 12, in <module>
from printing_systems import printing_systems
File "/home/jsivil/Desktop/Proyectos/UNPAZ/jcheq/jcheq/printing_systems/printing_systems.py", line 7, in <module>
from jcheq import JCheq
File "/home/jsivil/Desktop/Proyectos/UNPAZ/jcheq/jcheq/jcheq.py", line 12, in <module>
from printing_systems import printing_systems
ImportError: cannot import name 'printing_systems'
参照をもう一度循環させないでください(例えば、 'printing_systems'を分解する)。あるいは、グローバルなスコープから取り込んだものを "欺く"ことができます。 –
um ... 'printing_systems'モジュールに' printing_systems'という変数がありますか? 'import printing_systems'の代わりにモジュールから変数をインポートしようとしています –
@BrianCainはいインポートをメソッドに移して今は動作しますが、それが受け入れ可能かどうかわかりません...どういう意味ですか分解している? – JorgeeFG