好的,我有一个如下的文件结构:
这就是我的生活主.py地址:
from paquete import testFunc
def main():
testFunc()
if __name__ == '__main__':
main()
这是我在test1.py中得到的:
def testFunc():
print("Hello from test1 function!")
这就是我在初始化中得到的:
from test1 import testFunc
但这不起作用,它说没有名为test1的模块。你知道吗
但是,如果我有以下情况:
from paquete.test1 import testFunc
它工作得很好。但是我不明白,如果它和test1在同一个目录中,为什么我需要在它前面加上目录名,就好像我在项目的根级别工作一样?你知道吗
您当前使用的是所谓的隐式相对导入。在python3.x中它被弃用,这在PEP 8中提到。你知道吗
您仍然可以使用相对导入;它只需要使用下面描述的带有前导点的syntax:
也是reference-
这是因为
paquete
在您的sys.path
中,但包的内部不是。因此,您可以为paquete
包进行绝对导入,但只能为其内部进行相对导入。paquete
在你身上sys.path
因为它在同一个目录中,你呢主.py. 你知道吗您可以在导入之前设置
__path__
属性,以获得import语句要考虑的包的内部信息。你知道吗请看这个以供参考https://docs.python.org/3/reference/import.html#module-path
相关问题 更多 >
编程相关推荐