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.导入指定位置的包

  • #在sys.path中增加指定位置

 

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 不压缩包,而是以目录的形式安装

 

 

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...