Python-Aren';相对于当前目录的t个包?
好的,我有一个如下的文件结构:Python-Aren';相对于当前目录的t个包?,python,python-3.x,Python,Python 3.x,好的,我有一个如下的文件结构: main.py/ 帕奎特/ __初始值 test1.py 这是我的main.py中的内容: from paquete import testFunc def main(): testFunc() if __name__ == '__main__': main() 这是我在test1.py中得到的: def testFunc(): print("Hello from test1 function!") 这就是我在我的___
- main.py/
- 帕奎特/
- __初始值
- test1.py
from paquete import testFunc
def main():
testFunc()
if __name__ == '__main__':
main()
这是我在test1.py中得到的:
def testFunc():
print("Hello from test1 function!")
这就是我在我的____; init.py中得到的:
from test1 import testFunc
但这不起作用,它说没有名为test1的模块
但是,如果我有以下情况:
from paquete.test1 import testFunc
它工作得很好。但是我不明白,如果它与test1在同一个目录中,为什么我需要在它前面加上目录名,就像我从项目的根级别开始工作一样 您当前使用的称为隐式相对导入。它在Python 3.x中被弃用,这在中提到 您仍然可以使用相对导入;它只需要使用下面描述的,带有前导点: 这些导入使用前导点指示相对导入中涉及的当前包和父包 又a— 相对导入的唯一可接受语法是来自。[module]导入名称的
。所有不以
开头的导入表单都被解释为绝对导入。(政治公众人物0328)
这是因为paquete
在您的sys.path
中,但包的内部没有。因此,您可以对paquete
包进行绝对导入,但只能对其内部进行相对导入paquete
位于您的sys.path
上,因为它与您的main.py位于同一目录中
您可以在导入之前设置\uuuuuu路径\uuuuuu
属性,以获取导入语句要考虑的包内部
看看这个,作为参考Uhm现在更有意义了。谢谢您的回复。:)我希望我能将两个回答标记为已接受。哈哈,谢谢你的回复,现在一切都变得更有意义了。
# Relative
from .test1 import testFunc
# Absolute
from paquete.test1 import testFunc