Python–cookbook–10.模块与包

Python–cookbook–10.模块与包

相关介绍

# coding=utf8
# 构建一个模块的层级包
# 确保每个目录都定义了一个 __init__.py 文件
# 绝大部分时候让 __init__.py 空着就好。但是有些情况下可能包含代码。例如__init__.py 能够用来自动加载子模块

# 控制模块被全部导入的内容
# 在你的模块中定义一个变量 __all__ 来明确地列出需要导出的内容
# somemodule.py

# 使用相对路径名导入包中子模块
# from mypackage.A import grok # OK
# from . import grok # OK

# 将模块分割成多个文件
# 分割成__init__.py a.py b.py
# class A:
#     def spam(self):
#         print('A.spam')
# class B(A):
#     def bar(self):
#         print('B.bar')
#         super().spam()

# 利用命名空间导入目录分散的代码
# foo-package/
#     spam/
#         blah.py
# bar-package/
#     spam/
#         grok.py

# 包命名空间的关键是确保顶级目录中没有 __init__.py 文件来作为共同的命名空间
# import sys
# sys.path.extend(['foo-package', 'bar-package'])
# import spam.blah
# import spam.grok

# 重新加载模块
# import somemodule
# import imp
# imp.reload()

# 运行目录或压缩文件
# 有一个已成长为包含多个文件的应用,它已远不再是一个简单的脚本,你想向用
# 户提供一些简单的方法运行这个程序
# 把应用程序放进它自己的目录并添加一个 __main__.py 文件
# myapplication/
#     spam.py
#     bar.py
#     grok.py
#     __main__.py
# 命令 python3 myapplication
# 解释器将执行 __main__.py 文件作为主程序
# 压缩同样适用
# 命令 python3 myapp.zip

# 读取位于包中的数据文件
# mypackage/
#     __init__.py
#     somedata.dat
#     spam.py

# import pkgutil
# data = pkgutil.get_data(__package__, 'somedata.dat')

# 将文件夹加入到sys.path
# 第一种使用 PYTHONPATH环境变量来添加
# bash % env PYTHONPATH=/some/dir:/other/dir python3
# 第二种方法是创建一个.pth 文件,将目录列举出
# 这个.pth 文件需要放在某个 Python 的 site-packages 目录,通常位于/usr/local/
# lib/python3.3/site-packages 或者 ~/.local/lib/python3.3/sitepackages
# myapplication.pth
# /some/dir
# /other/dir
# 第三种,手动调节 sys.path 的值,虽然这能“工作”,它是在实践中极为脆弱,应尽量避免使用
# import sys
# sys.path.insert(0, '/some/dir')
# sys.path.insert(0, '/other/dir')

# 通过字符串名导入模块
# 想导入一个模块,但是模块的名字在字符串里。你想对字符串调用导入命令
# import importlib
# math = importlib.import_module('math')
# print(math.sin(2))

# 通过钩子远程加载模块

# 导入模块的同时修改模块
# 你想给某个已存在模块中的函数添加装饰器。不过,前提是这个模块已经被导入并且被使用过

# 安装私有的包
# python3 setup.py install --user
# pip install --user packagename

# 创建新的 Python 环境

# 分发包
# 已经编写了一个有用的库,想将它分享给其他人
# from distutils.core import setup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柴寺仓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值