目录
一、python包基础
参考:https://blog.csdn.net/weixin_44251004/article/details/86185527#_1
1.理解包
2.包的导入方式
(1)import导入
(2)from … import … 导入
- from 包名.模块名… import 函数名
- from 包名.模块名… import 函数名,函数名,…
- from 包名 import 模块名
- from 包名 import 模块名,模块名1…
- # 注意:from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,如:from a import b.c是错误语法
3.__init __.py文件
4.from 包.模块 import *
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 不压缩包,而是以目录的形式安装