Ich habe eine Klasse JCheq, mit einer statischen var namens "Logger".So lösen Sie diese Python-Import-Zirkelreferenz
JCheq importiert Modul printing_systems
, aber ich muss JCheq.logger
von printing_systems
verwenden.
Mein Code kompiliert nicht, nachdem ich import JCheq
in printing_systems.py
gesetzt habe.
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)
Fehler-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'
Machen Sie die Referenzen nicht mehr zirkulär (z. B. "printing_systems" zerlegen). Oder Sie können "schummeln" und den Import aus dem globalen Bereich in den Bereich verschieben, in dem er verwendet wird. –
um ... gibt es eine Variable namens 'printing_systems' im' printing_systems' Modul? Sie versuchen, eine Variable aus dem Modul zu importieren, anstatt nur "import printing_systems" –
@BrianCain Ja habe ich den Import auf die Methoden verschoben und jetzt funktioniert es, aber ich weiß nicht, ob das akzeptabel ist ... was meinst du mit der Zersetzung? – JorgeeFG