我有以下模块结构:
/home/Dir1/Dir2/Mod.py
在/home中,我有一个正在执行的脚本Test.py
,并有以下代码:
同样,目录: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公开,而用户不知道有一个同名的模块。在
我在这里做傻事吗?在
将您的
Test.py
更改为使用具有完全限定名的dummy
:以及您的
^{pr2}$Dir1/Dir2/.__init__.py
在Mod
前面使用前导.
的相对导入:要使其发挥作用:
注意:按照惯例,所有包(即目录)和模块(即
py
文件)的名称都应小写。在相关问题 更多 >
编程相关推荐