__在python3中init_yu.py没有按预期工作

2024-04-20 16:21:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下模块结构:

/home/Dir1/Dir2/Mod.py

在/home中,我有一个正在执行的脚本Test.py,并有以下代码:

^{pr2}$

同样,目录:Dir1有一个__init__.py文件,其代码如下:

print('dir1 init')
x = 1

目录Dir2有下面的__init__.py文件,其代码如下:

from Mod import dummy
print('dir2 init')
y = 2

有一个最终文件Mod.py,其定义如下:

print ("in Mod.py")
z = 3
def dummy():
    print ("Hello World")

由于Test.py是我的应用程序中的入口点,因此出现以下错误:

dir1 init
Traceback (most recent call last):
  File "Test.py", line 1, in <module>
    import Dir1.Dir2
  File "C:\Users\bhatsubh\Desktop\Everything\Codes\Python\Dir1\Dir2\__init__.py"
, line 1, in <module>
    from Mod import dummy
ImportError: No module named 'Mod'

为什么Dir2内的__init__.py文件找不到文件Mod.py?在

基本上,我要做的是让Mod.py内的函数dummy公开,而用户不知道有一个同名的模块。在

我在这里做傻事吗?在


Tags: 模块文件代码inpytestimportmod
1条回答
网友
1楼 · 发布于 2024-04-20 16:21:07

将您的Test.py更改为使用具有完全限定名的dummy

import Dir1.Dir2

Dir1.Dir2.dummy()

以及您的Dir1/Dir2/.__init__.pyMod前面使用前导.的相对导入:

^{pr2}$

要使其发挥作用:

python Test.py 
dir1 init
in Mod.py
dir2 init
Hello World

注意:按照惯例,所有包(即目录)和模块(即py文件)的名称都应小写。在

相关问题 更多 >