模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块。
为了让我们自己写的模块被python解释器知道,需要用sys.path.append(“路径”),但这种情况下,比如在交互模式下,如果关闭了,再开启,还要重新告知。
常用方法:设置PYTHONPATH环境变量。
vim /etc/profile
export PATH = /home/jack/python:$PAT
__all__
控制模块的导入行为from test import *
时,为了防止把不需要的模块导入,在模块里边新建一个变量__all__
,放上将来要使用的函数,类,全局变量的名字,如果不放,别人就无法使用__all__ =["Tset","test"]
。
__init__.py
控制包的导入行为包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py
文件,那么这个文件夹就称之为包。
这个__init__.py
控制着包的导入行为,在这个文件中, 定义一个__all__
变量,它控制着 from 包名 import *
时导入的模块,如__all__ = ["sendmsg"]
。
编辑setup.py
from distutils.core import setup
#Python小白学习交流群:725638078
setup(name="dongGe", version="1.0", description="dongGe's module",author="dongGe",py_modules=['test.sendmsg', 'test.recvmsg'])
构建模块
python/python3 setup.py build
生成发布压缩包
python/python3 setup.py sdist
找到模块的压缩包。
解圧。
进入文件夹。
执行命令python setup.py install。
模块的引入。
from 模块名 import 模块名或者*
import sys
name = sys.argv[1]
循环导入就是程序在导入某个模块的过程中,该模块里的函数又需要导入自身的这个模块,如此进入死循环。
避免循环导入:所有在开发的过程中,开发者们写的模块不能相互调用,即应该相互隔开,然后由架构师来负责整体的模块调用使用,也就是上下设计分层,降低耦合。
模块被导入后,如果某一方更新了这个模块,但是import module不能重新导入模块,重新导入需用from imp import *
,然后再使用reload(test)即可重新导入。