我的项目具有以下结构:
DSTC/
st/
__init__.py
a.py
g.py
tb.py
dstc.py
以下是a.py
部分:
import inspect
import queue
import threading
以下是tb.py
部分:
import functools
from . import a
直接运行时,a.py
不会产生任何错误,并且很容易验证是否没有SyntaxError
。但是,运行tb.py
会导致以下错误:
"C:\Program Files\Python36\python.exe" C:/Users/user/PycharmProjects/DSTC/st/tb.py
Traceback (most recent call last):
File "C:/Users/user/PycharmProjects/DSTC/st/tb.py", line 15, in <module>
from . import a
ImportError: cannot import name 'a'
Process finished with exit code 1
我应该如何重写a
from的导入,tb
以便tb
可以直接运行而不会引起错误?
您可以使用
import a
或相对
from .a import *
在这种情况下,**a**
应该加载模块
python -m a tb.py
将为您工作。
不建议导入*,根据需要导入
如果您在DSTC中有一个main.py,如下所示:
# main.py
from st import tb
并且您运行main.py,只有相对的方法对您有效
# tb.py
import a # will not work
from .a import * # will work
因为这一次您将“ a”作为模块加载。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句