我正在运行一个像这样的python项目:
project
Test.py
COMMON.py
SYSTEM.py
PTEST1
Hello.py
当运行代码“ Test.py”时,它将显示NameError,我不确定为什么吗?
但是,如果我在Test.py和PTEST1 / Hello.py中将“ from SYSTEM import *”替换为“ from COMMON import *”,它将按预期工作。
#Test.py is like this:
from SYSTEM import *
myvalue.Hello.printf()
# COMMON.py is like this:
myvalue = lambda: None
from PTEST1.Hello import Hello
myvalue.Hello = Hello
# SYSTEM.py is like this:
from COMMON import *
#PTEST1/Hello.py
from SYSTEM import *
class Hello():
@staticmethod
def printf():
print("Hello1")
print(vars(myvalue))
我希望通过不更改导入代码而不会出现“ NameError”。顺便说一句,我的python是3.6 +
答案 0 :(得分:0)
优良作法是将文件名小写。
似乎您正在project/
下创建一个Python项目。任何目录都需要在每个目录中都有一个文件__init__.py
,以便在Python中被发现。
然后,您需要按模块的全名(而不是相对命名)来引用模块。
因此目录结构应为:
project/
__init__.py
test.py
common.py
system.py
ptest1/
__init__.py
hello.py
每次引用文件时,都应提供完整路径。
# import everything from hello.py
from project.ptest1.hello import *
# import everything from common.py
from project.common import *
# import everything from system.py
from project.system import *