[结构]
Root
|_ app
|_util
|_ log.py
|_config.py
|_ run.py
[run.py]
#import sys
#import os
#sys.path.insert(0, os.path.abspath('.'))
from app.config import Config
class App(object):
def __init__(self):
pass
def run(self):
Config.set_code(200)
Config.print_code()
if __name__ == '__main__':
app = App()
app.run()
[config.py]
from app.util.log import Log
class Config(object):
code = None
def __init__(self):
pass
@classmethod
def set_code(cls, code):
cls.code = code
@classmethod
def get_code(cls):
return cls.code
@classmethod
def print_code(cls):
Log.msg()
[log.py]
from app.config import Config
class Log(object):
def __init__(self):
pass
@classmethod
def msg(cls):
code = Config.get_code()
print('Code is: %r' % code)
[当前输出]
File "C:\works\workout\tmp\app\util\log.py", line 1, in <module>
from app.config import Config
ImportError: cannot import name 'Config' from 'app.config' (C:\works\workout\tmp\app\config.py)
[预期输出]
Code is: 200
另一个疑问,有什么方法可以将根导入修复为“ app”,然后通过该文件夹/子文件夹文件(任何深度)中的任何内容进行访问,
[app / sub1 / a.py]
from app.util.xx import XX
**from app.a import A**
from app.aaa.bb import BB
A.some_fn()
[app / a.py]
from app.util.xx import XX
**from app.sub1.a import A**
from app.aaa.bb import BB
A.some_fn()
[app / sub1 / sub2 / a.py]
**from app.sub1.a import A**
**from app.sub1.sub2.b import B**
from app.aaa.bb import BB
A.some_fn()
如果有任何建议或想法,请! 预先感谢,
答案 0 :(得分:0)
log.py
和config.py
之间的循环依赖性是问题所在。很多时候可以避免循环依赖。所以我建议先尝试一下。
但是,如果要使用循环依赖性,可以按照here所述进行操作。
对于您的解决方案,它看起来像这样。适应log.py
:
from app.config import Config
至import app.config
和
code = Config.get_code()
至code = app.config.Config.get_code()