翼度科技»论坛 编程开发 python 查看内容

python 自定义包的实现示例

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
1. 代码目录

创建自定义包的时候,原理是当
  1. python
复制代码
检测到一个目录下存在
  1. __init__.py
复制代码
文件时,
  1. python
复制代码
就会把它当成一个模块(
  1. module
复制代码
)。
下面这个例子是网上整理的代码,但是有些小改动,可以直接拿来就用。
看代码结构:


2. 每个目录的代码


parent 主目录


    1. main.py
    复制代码
  1. import sys

  2. # 这一行需要放在最前面,也是最关键
  3. # 将包含parent包的路径添加进系统路径
  4. sys.path.append(r"..")


  5. print('-----开始import-----\n')

  6. import parent.pack2.mod2_1          # 第1种 引用方法
  7. import parent.pack2.mod2_2 as p2m2  # 第2种 引用方法
  8. from parent.pack.mod import *       # 第3种 引用方法

  9. if __name__ == '__main__':
  10.     print('-----开始main-----\n')

  11.     # 第1种 引用的调用方法
  12.     parent.pack2.mod2_1.func()
  13.     # 第2种 引用的调用方法
  14.     p2m2.func()
  15.     # 第3种 引用的调用方法
  16.     func()
  17.    
  18.     #  import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中
  19.     print('\npack2包中的模块有:')
  20.     print(parent.pack2.__all__)
复制代码

    1. __init__.py
    复制代码
  1. if __name__ == '__main__':
  2.     print('parent 作为主程序运行')
  3. else:
  4.     print('parent 初始化')
复制代码
pack 包

a.
  1. __init__.py
复制代码
  1. if __name__ == '__main__':
  2.     print('作为主程序运行')
  3. else:
  4.     print('Pack初始化')
复制代码
b.
  1. config.py
复制代码
  1. run = 9999
复制代码
c.
  1. mod.py
复制代码
  1. # mod
  2. def func():
  3.     print('pack.mod.func()')

  4. if __name__ == '__main__':
  5.     print('mod 作为主程序运行')
  6. else:
  7.     print('mod 被另一个模块调用')
复制代码
pack2 包

a.
  1. __init__.py
复制代码
  1. # Pack2 的 __init__.py

  2. # __all__ 用于当前Pack2包是所包含的模块
  3. __all__ = ["mod2_1", "mod2_2", "mod2_3"]

  4. if __name__ == '__main__':
  5.     print('Pack2作为主程序运行')
  6. else:
  7.     print('Pack2初始化')
复制代码
b.
  1. mod2_1.py
复制代码
  1. # 这里导入上一级目录下的 pack 下面的 config 文件
  2. from parent.pack  import config

  3. # mod2
  4. def func():
  5.     print('pack2.mod2_1.func()')
  6.     print("config: " + str(config.run))

  7. if __name__ == '__main__':
  8.     print('mod2_1 作为主程序运行')
  9. else:
  10.     print('mod2_1 被另一个模块调用')
复制代码
c.
  1. mod_2.py
复制代码
  1. # mod2
  2. def func():
  3.     print('pack2.mod2_2.func()')

  4. if __name__ == '__main__':
  5.     print('mod2_2 作为主程序运行')
  6. else:
  7.     print('mod2_2 被另一个模块调用')
复制代码
代码:
https://gitee.com/zhiyong47/vine/tree/master/effective_codes/parent
到此这篇关于python 自定义包的实现示例的文章就介绍到这了,更多相关python 自定义包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/python/321043fbd.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具