模块:逻辑上组织python代码(变量、函数、类、逻辑:实现功能),以.py为结尾的python文件。(test.py 文件,对应的模块名:test)
包:用来从逻辑上组织模块的,本质就是一个目录(带有__init__.py的文件)。
导入方法:
import test
from test import *
from test import name,age
from test import name as name_test //从test中导入name变量后,变量名更改为name_test (防止当前模块中也有‘‘name‘‘变量
import:(路径搜索和搜索路径)
导入模块就是把被导入的模块(python文件)解释一遍.
导入包就是把被导入包中的__init__.py 解释一遍.
在我们导入 文件/包 的时候,我们所搜索的路径都是在当前文件(相同/同级)下中导入的,如果被导入的文件没有和当前文件是(相同/同级)目录下,单纯的impot是导入不成功的。
这里就要用到os.sys.path这个方法
>>> import os >>> os.sys.path [‘‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages‘]
这里os.sys.path 就是环境变量,如果说想要import 模块/包,那都是从这个list中的路径中查找 模块/包 的,所以想要import不是同级目录中的文件,可以把这个程序的目录添加到环境变量中,然后再进行import就可以了 找到所要import文件的目录,加到环境变量中。
abs_path = os.path.abspath(__file__) #当前文件的绝对路径 base_path =os.path.dirname(abs_path) #当前目录的父级目录 os.sys.path.insert(0,base_path) #将目标文件的目录添加到环境变量中,因为路径搜索是从list第一个元素进行搜索,所以把目录添加到第一位是为了能够更快的查找,也防止在其他目录下有与目标文件重名的文件.了能够更快的查找,也防止在其他目录下有与目标文件重名的文件.
时间: 2024-11-10 14:33:16