例子
不要使用相对路径。
'''
__init__.py
'''
# from net.functions import *
VERSION = "1.0.0"import os, sys
module_path = os.path.dirname(__file__)
module_parent_path = os.path.dirname(module_path)
sys.path.extend([module_path, module_parent_path])
from net import *from functions import *
from net.fnetlogger import FnetLogger
模块导入
在Python中,一个包是一个目录,它包含了一组相关的模块和子包。在这个包目录下,如果存在一个名为__init__.py
的文件,它将被视为这个包的初始化模块。
__init__.py
的作用是在导入包时执行一些初始化代码,例如设置包的默认属性或者导入子模块。同时,它还可以控制包的导入行为,定义包的接口和子包的可见性等。
下面是一个示例,假设我们有一个名为my_package
的包,它包含了两个模块module1
和module2
,并且我们想在包被导入时执行一些初始化代码:
my_package/__init__.pymodule1.pymodule2.py
我们可以在__init__.py
中编写如下代码:
# my_package/__init__.pyprint("Initializing my_package...")# 导入模块
from my_package import module1
from my_package import module2# 设置默认属性
VERSION = "1.0.0"
这里我们在__init__.py
中输出了一条初始化信息,并导入了module1
和module2
模块。我们还定义了一个名为VERSION
的默认属性,可以在其他模块中使用。
当我们导入my_package
时,__init__.py
会被自动执行,输出初始化信息并导入模块:
import my_package# 输出 "Initializing my_package..."
# 并导入 my_package.module1 和 my_package.module2
这样,我们就可以在包被导入时执行一些初始化操作,并方便地导入子模块和设置默认属性。
建议不要使用相对路径,即点符号
不要使用相对路径。
点符号
从如下代码:
from . import module1
代码中的点符号是相对路径,是相对当前模块文件夹的路径,而不是编译器等其他路径。即如下:
# . in __init__.py the same as
os.path.dirname(__file__)
关于import *
# __init__.py
from . import * # attention:: DO NOT Use Relative Path.
from xx import *# the same as
from os import *
在python的__init__.py
文件中经常能看到import *,它的意思就是将文件中的函数,变量,类等全导入。列入你在文件中有个属性是Pi
,你在使用from xx import Pi
后,你便可以直接调用Pi
,而不需要使用xx.Pi
来调用Pi。