【发布时间】:2016-07-10 22:32:15
【问题描述】:
我有一个 JCheq 类,带有一个名为“logger”的静态变量。
JCheq 导入模块printing_systems,但我需要使用来自printing_systems 的JCheq.logger。
将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,例如)。或者您可以“作弊”并将导入从全局范围移到使用它的位置。 -
嗯...
printing_systems模块中是否有一个名为printing_systems的变量?您正在尝试从模块中导入变量,而不仅仅是import printing_systems -
@BrianCain 是的,我将导入移到了方法中,现在它可以工作了,但我不知道这是否可以接受……分解是什么意思?
-
@TadhgMcDonald-Jensen printing_systems.py 在 printing_systems 目录中。我没有找到使它更简单的方法。
-
这意味着您正在尝试从包中导入并且需要
__init__.py以便 python 将其识别为包
标签: python python-3.x python-import python-module circular-reference