Python-包

目录

一、包   package

二、包的导入

1.导入原则

2.导入方式

(1)import 包名.模块名

(2)from 包名.模块名.....   import 变量名或者函数名

(3)from 包名.模块名... import 变量名1,变量名2........

(4)from 包名.模块名.... import  模块名

(5)from 包名.模块名 import *

三、包的绝对导入和相对导入

(同级目录下的包与包之间的相互调用)

1.绝对导入

2.相对导入

(1)在demo04的dmeo04_test01中导入demo03的demo03_test01()

(2)在根目录下的demo02_包.py下执行:

四、import 导入自定义包的子模块

(包下的模块相互调用)

1.在子包调用的时候不能直接用import,

当脚本运行的时候,可以正常执行,但是在别的地方运行,路径会发生变化,运行就可能出错

2.解决方法:

(1)pycharm本身

(2)手动添加路径

五、import 包名

1.只导入到包名,不能调用包下的所有模块

2.要想调用包下的所有模块,在包下的__init__.py文件中写:

六、包的安装与发布

1.在包的统计目录下创建setup.py

2.在命令行中写:python3 setup.py build      build

3.在命令行中写:pytohn3 setup.py sdist       dist   把刚才的东西打成一个压缩包

4.把压缩包解压,找到setup.py的路径,复制下来

5.cd..   进入上级目录

  cd..    (setup.py的路径)    pyhhon3 setup.py install

6.在任意一个模块中测试该包是否能被导入:


一、包   package

文件夹,包含一个__init__.py文件的文件夹


二、包的导入

1.导入原则

凡是在导入时带点的,点的左边就是一个包

2.导入方式

import....方式 import 包名.模块名  
form .....import  ..方式 from 包名.模块名.....   import 变量名或者函数名 from后import 引入的模块,必须明确的一个不能带点,否则会有语法错误
from 包名.模块名... import 变量名1,变量名2........

from 包名.模块名.... import  模块名

from 包名.模块名 import * 不能导入模块中的所有东西,只能导入__init__.py的东西

在demo01下的demo01_test02导入demo01_test01,并调用demo01_test01中的函数与变量

(1)import 包名.模块名

# import 包名.模块名
import python1224.demo01.demo01_test01

# 调用方式:模块名.变量名或函数
python1224.demo01.demo01_test01.test001()
python1224.demo01.demo01_test01.test01()

(2)from 包名.模块名.....   import 变量名或者函数名

# from 包名.模块名....  import  变量名或函数名
from python1224.demo01.demo01_test01 import test01

test01()
from python1224.demo01.demo01_test01 import test001

test001()

(3)from 包名.模块名... import 变量名1,变量名2........

# from 包名.模块名.....  import 变量名,函数名
from python1224.demo01.demo01_test01 import test01, test001

test01()
test001()

(4)from 包名.模块名.... import  模块名

# from 包名.模块名.... import 模块名
from python1224.demo01 import demo01_test01

# 调用方式:模块名.变量名或函数名
demo01_test01.test01()
demo01_test01.test001()

(5)from 包名.模块名 import *

  • 要想调用demo02里面的所有模块,必须在demo02下的__init__.py中定义名字,在__init__.py中写入__all__

  • 在根目录下的其他模块导入时就没有问题了


三、包的绝对导入和相对导入

(同级目录下的包与包之间的相互调用)

1.绝对导入

以根目录为起点

2.相对导入

一个点(.) 表示当前目录
两个点(..) 表示上一级目录

(1)在demo04的dmeo04_test01中导入demo03的demo03_test01()

(2)在根目录下的demo02_包.py下执行:

如果是相对导入,一个模块必须要有包结构,且只能导入它的顶层模块内部的模块,

如果一个模块被直接运行,则它自己的顶层模块,不存在层次结构,所以找不到其他相对路径


四、import 导入自定义包的子模块

(包下的模块相互调用)

1.在子包调用的时候不能直接用import,

当脚本运行的时候,可以正常执行,但是在别的地方运行,路径会发生变化,运行就可能出错

测试一下路径:


2.解决方法:

把test02()的当前目录:___________dmeo05添加到path里面

(1)pycharm本身

       file---->settiings------>Project day02----->Project  Structure----->找到demo05

           ------>右键:sources------>Apply------->ok

这样设置完之后,会发现:

  • test01下面的红线没有了
  • 在demo02_包中运行不出错了


(2)手动添加路径


五、import 包名

1.只导入到包名,不能调用包下的所有模块

2.要想调用包下的所有模块,在包下的__init__.py文件中写:

from . import test01,tets02


六、包的安装与发布

1.在包的统计目录下创建setup.py

2.在命令行中写:python3 setup.py build      build

3.在命令行中写:pytohn3 setup.py sdist       dist   把刚才的东西打成一个压缩包

4.把压缩包解压,找到setup.py的路径,复制下来

5.cd..   进入上级目录

  cd..    (setup.py的路径)    pyhhon3 setup.py install

6.在任意一个模块中测试该包是否能被导入:


猜你喜欢

转载自blog.csdn.net/g_optimistic/article/details/86259643