Python 关于uuu init_uuuuu.py的几个问题
环境:蟒蛇3.8 目录:Python 关于uuu init_uuuuu.py的几个问题,python,module,Python,Module,环境:蟒蛇3.8 目录: test\ module1\ __init__.py mod1.py module2\ mod2.py main.py 1.我可以导入没有\uuuu init\uuuu.py的目录,为什么? 我想检查init.py的工作方式,因此我将module1和module2导入main.py # test\main.py from module1 import mod1 from mod
test\
module1\
__init__.py
mod1.py
module2\
mod2.py
main.py
1.我可以导入没有
\uuuu init\uuuu.py
的目录,为什么?
我想检查init.py的工作方式,因此我将module1
和module2
导入main.py
# test\main.py
from module1 import mod1
from module2 import mod2
在我看来,第2行应该会出现错误,因为我没有在module2
但它们都可以进口
现在,我对\uuuu init\uuuu.py
的工作原理感到困惑
2.我无法导入在
\uuuu init\uuuuuuuy.py
我尝试以以下方式在main.py
中导入mod1.py
:
# test\main.py
import module1
module.mod1.mod1_print() # mod1_print() is a function which is defined in mod1.py
因此,我将mod1.py
导入test\module1\\uuuu init\uuuu.py
:
# test\module1\__init__.py
import mod1
但是当我执行main.py
时,我得到了这个错误:
D:\>"C:/Program Files/Python38/python.exe" d:/test/main.py
Traceback (most recent call last):
File "d:/test/main.py", line 2, in <module>
import module1
File "d:\test\module1\__init__.py", line 1, in <module>
import mod1
ModuleNotFoundError: No module named 'mod1'
D:\>“C:/ProgramFiles/Python38/python.exe”D:/test/main.py
回溯(最近一次呼叫最后一次):
文件“d:/test/main.py”,第2行,在
导入模块1
文件“d:\test\module1\\uuuu init\uuuuu.py”,第1行,在
导入mod1
ModuleNotFoundError:没有名为“mod1”的模块
我的问题是:
如果我想以以下形式导入mod_print()
:module.mod1.mod1_print()
,我应该怎么做
\uuu init\uuuu.py
的要求模块1/\uuuuu init\uuuuuu.py
中尝试类似的操作:导入模块1.mod1
\uuu init\uuuu.py
的要求模块1/\uuuuu init\uuuuuu.py
中尝试类似的操作:导入模块1.mod1
Python3.3+提供了一个功能,允许它在不使用\uuu init\uuuu.py
文件的情况下创建包
允许隐式命名空间包意味着可以完全放弃提供init.py文件的要求,受影响的部分可以安装到一个公共目录中,也可以根据发行版的需要拆分到多个目录中
Python3.3+提供了一个不需要\uuuu init\uuuuu.py
文件就可以创建包的功能
允许隐式命名空间包意味着可以完全放弃提供init.py文件的要求,受影响的部分可以安装到一个公共目录中,也可以根据发行版的需要拆分到多个目录中