ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python - 内置对象 之 包

2021-05-01 23:01:29  阅读:159  来源: 互联网

标签:__ 内置 python setup py 对象 导入 模块 import


目录

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

 

 

标签:__,内置,python,setup,py,对象,导入,模块,import
来源: https://blog.csdn.net/helunqu2017/article/details/116334179

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有