目录
3.在setup中导入内置模块 distutils.core ------(动态参数,接收关键字)
4.在控制台Terminal中输入 python3 setup.py build
5.压缩成压缩包:在控制台输入python3 setup.py sdist
一、包
1.定义:包就是一个文件夹,就是一个包含了__init__.py文件的文件夹
2.创建:在项目文件下New-----python Package(自带__init__.py文件)
New----Directory(不带任何)
二、包的导入
导入原则:凡是在导入时带点的,点的左边就是一个包
1.import导入
2.from...import.....导入
1).from 包名.模块名 import 变量名
2).from 包名 .模块名 import 变量名1,变量名2...
3).from 包名 import 模块名
4).from 包名 import 模块1,模块2...
3.__init__.py文件
__init__可以为空,也可以存放包的初始化代码
不管是哪种方式,只要第一次导入包或者包的其他部分,都会依次执行包下的__init__.py文件
4.from 包 .模块 import *
from python1224.demo02 import *------>只能导入--init--.py中的内容
*这种形式不能调用所有,demo02模块里的函数test02()不能调用
想要调用demo02中的所有,必须在demo02下的__init__中定义名字
用:__all__=['模块','函数','变量']来定义名字
from python1224.demo02 import *
demo02_test01.test02() #会报错
运行结果:
在__all__中定义的变量名都能被import *中调用
结果
三、包的相对导入和绝对导入
1.绝对导入:以跟目录(Python1224)开头
2.相对导入:用 ‘ · ’或‘ ··’的方式为其实位置
3.测试
绝对导入 当脚本文件运行时不会出错,可以找到路径
相对导入 当脚本文件运行时,会报错,运行时,在当前路径找不到调用的包,相对导入将当前目录当做顶层目录,
四、import导入自定义包的子模块
import 可以导入内置或者第三方模块,但绝对不可以调用自定义的子模块,在目录下找不到会报错
结果:
解决办法:
1>手动添加附目录
import sys,os
print(sys.path)
abs_path=os.path.abspath(__file__) #获取当前目录下的绝对路径
path=os.path.dirname(abs_path)#获取附目录
sys.path.append(path)#手动添加目录
print(sys.path)#当前目录已经添加附目录
2>在py charm中添加
File--->Settings--->当前项目名称--->Poject Structure--->顶层目录---->包(需要)--->sources---->Apply
五、包的单独导入
1.直接导入包会报错,因为包不会自动加载内存
解决办法:在调用包的__init__.py中添加导入所需的模块
结果:加入后在调用时,会自动执行__init__.py文件下的内容,所以不会报错
六、包的安装和发布
1.创建一个包
(1).在包中创建模块,写入所需的函数
2.在和包同级目录下,创建一个setup模块
3.在setup中导入内置模块 distutils.core ------(动态参数,接收关键字)
4.在控制台Terminal中输入 python3 setup.py build
目录中自动生成build包,也可以在文件下找到
5.压缩成压缩包:在控制台输入python3 setup.py sdist
目录中会自动生成dist包
6.解压压缩包:
在文件夹中先解压压缩包,获取当前路径
在控制台输入:cd 解压出来的文件所在的路径
7.安装:
在控制台输入 :Python3 setup.py install