自己写的一些 python 小工具想要保存一下,然后在需要的时候可以方便调用,所以
了解了一下 python 模块的编写,这里记录一下。
一个文件就是一个模块
实际上,一个 python 源文件就是一个模块,并不需要什么特殊的操作,需要注意的
就是程序怎么找到这个模块。如果模块放在了sys.path
所指定的位置,那么就可以
被找到。比如在我的机器上:
1 | import sys |
其中第一个是空的,表示的是当前文件夹。
简单例子
execute.py:
1 | #!/usr/bin/env python3 |
test_execute.py:
1 | #!/usr/bin/env python3 |
运行一下:
1 | $ chmod +x test_execute.py |
运行成功,没有问题。
更进一步:包
为了方便管理,建一个包(package)把文件(即模块)放在里面。一个包里可以有多个
模块。建一个包也很方便,新建一个目录即可,目录里面新建一个名为__init__.py
的文件,不必有内容,空文件即可,这样该目录下的其他 .py 文件就
可以作为模块被引用。目录结构如下:
1 | $ tree mypackage |
其中__pycache__
是预编译过的文件,可以加快执行速度。__main__.py
的作用是
让这个包可以像下面这样执行:
1 | $ python mypackage ls |
main.py的内容为:
1 | #!/usr/bin/env python3 |
现在要引用包里的execute
模块就可以这样:
test_import_package.py:
1 | #!/usr/bin/env python3 |
运行结果如下:
1 | $ ./test_import_package.py |