本文主要是介绍python - 内置对象 之 包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
一、python包基础
1.理解包
2.包的导入方式
3.__init __.py文件
4.from 包.模块 import *
5.包的相对和绝对导入
6.导入指定位置的包
7.如何导入上级目录的包
二、python包封装分发
一、python包基础
参考:https://blog.csdn.net/weixin_44251004/article/details/86185527#_1
1.理解包
- 包就是一个包含了__init__.py文件的文件夹。包只是模块的一种形式而已,包即模块。
- 包的作用是包含多个模块,但包的本质依然是模块,因此包也可用于包含包
2.包的导入方式
- 分为import和from … import …两种。但是无论哪种,导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,否则非法。
(1)import导入
- 格式:import 包名.模块名
- 使用方法:包名.模块名.函数名
(2)from … import … 导入
- from 包名.模块名… import 函数名
- from 包名.模块名… import 函数名,函数名,…
- from 包名 import 模块名
- from 包名 import 模块名,模块名1…
- # 注意:from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,如:from a import b.c是错误语法
3.__init __.py文件
- 不管哪种导入方式,只要是第一次导入包或者是包的任何其他部分,都会依次执行包下的__init__.py文件,这个文件可以为空,但是也可以存放一些初始化包的代码。
4.from 包.模块 import *
- # 实际上该语句只会导入包目录中__init__.py里__all__的内容,如__all__=['test1']
5.包的相对和绝对导入
- 绝对导入:以最顶级包作为起始
- 相对导入:用.或者…的方式最为起始(只能在一个包中使用,不能用于不同目录内)
- 参考 https://blog.csdn.net/weixin_44251004/article/details/86185527#_1
案例:
jutest
|_ _ _ product
| |_ _ __init__.py
| |_ _ a12.py
|_ _ _ tool
| |_ _ mws.py
| |_ _ utils.py
| |_ _ __init__.py
|_ _ __init__.py
|_ _ test.py
|_ _ test2.py
test.py中导入各模块的路径写法
- from tool.mws import Products #导同级目录tool下的mws.py中的Product类
- from product.a12 import ret #导同级目录product下的a12.py中的ret函数
- from test2 import say #导同级文件test2.py下的say函数
6.导入指定位置的包
7.如何导入上级目录的包
直接把上级目录加到sys.path里
- 相对路径:sys.path.append('../')
- 绝对路径:sys.path.append(absolute_path)
二、python包封装分发
参考:https://www.cnblogs.com/paisenpython/p/10329882.html
Python 库打包分发的关键在于编写 setup.py 文件。
setup.py编写规则是从 setuptools 或者 distuils 模块导入 setup 函数,并传入各类参数进行调用。
from setuptools import setup
#from distutils.core import setup
setup(
#包名字
name='demo',
#包版本
version='1.0',
#简单描述
description='This is a test of the setup',
#作者
author='huoty',
#作者邮箱
author_email='sudohuoty@163.com',
#包的主页
url='https://www.konghy.com',
#包
packages=['demo'],
)
setup 函数常用的参数
- # name 包名称
- # version 包版本
- # author 程序的作者
- # author_email 程序的作者的邮箱地址
- # maintainer 维护者
- # maintainer_email 维护者的邮箱地址
- # url 程序的官网地址
- # license 程序的授权信息
- # description 程序的简单描述
- # long_description 程序的详细描述
- # platforms 程序适用的软件平台列表
- # classifiers 程序的所属分类列表
- # keywords 程序的关键字列表
- # packages 需要处理的包目录(通常为包含 __init__.py 的文件夹)
- # py_modules 需要打包的 Python 单文件列表
- # download_url 程序的下载地址
- # cmdclass 添加自定义命令
- # package_data 指定包内需要包含的数据文件
- # include_package_data 自动包含包内所有受版本控制(cvs/svn/git)的数据文件
- # exclude_package_data 当include_package_data为 True时用于排除部分文件
- # data_files 打包时需要打包的数据文件,如图片,配置文件等
- # ext_modules 指定扩展模块
- # scripts 指定可执行脚本,安装时脚本会被安装到系统 PATH 路径下
- # package_dir 指定哪些目录下的文件被映射到哪个源码包
- # requires 指定依赖的其他包
- # provides 指定可以为哪些模块提供依赖
- # install_requires 安装时需要安装的依赖包
- # entry_points 动态发现服务和插件,下面详细讲
- # setup_requires 指定运行 setup.py 文件本身所依赖的包
- # dependency_links 指定依赖包的下载地址
- # extras_require 当前包的高级/额外特性需要依赖的分发包
- # zip_safe 不压缩包,而是以目录的形式安装
这篇关于python - 内置对象 之 包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!