python包的相关知识点——包的导入、相对路径、绝对路径

本文详细介绍了Python包的管理,包括包的导入(import和from...import...)、__init__.py文件的作用、相对和绝对导入、自定义包的子模块导入、包的单独导入以及包的安装和发布。强调了正确导入自定义包子模块的方法和避免import错误的解决方案。
摘要由CSDN通过智能技术生成

目录

一、包

二、包的导入

1.import 导入

2.from...import...导入

 3.__init__.py文件

4.from 包.模块 import *

三、包的相对和绝对导入

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

五、包的单独导入

六、包的安装和发布


一、包

在我们的项目中,可能会有太多的模块

但是我们不能把所有的模块这样放在这里,这样项目会乱七八糟。

我们可以将所有相同类型的模块放在一个文件夹中,这个文件夹就叫做包

包就是文件夹,他用于存放文件也就是模块。包中也可以存放包

包就是一个包含了__init__.py文件的文件夹。

包只是模块的一种形式而已,包即模块。

包的结构:

包
|----__init__.py 包的标志文件
|----模块一
|----模块二
|----子包(文件夹)
|----|----__init__.py
|----|----子模块一
|----|----子模块二

二、包的导入

1.关于包相关的导入语句也分为import和from ... import ...两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,否则非法。可以带有一连串的点,如demo0demo02.demo03,但都必须遵循这个原则。

2.对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。

3.对比import demo和from demo import name的应用场景:
如果我们想直接使用name那必须使用后者。

1.import 导入

在demo01_test02.py 中 导入 demo01_test01.py

demo01_test01.py 源码:

def say():
    print('demo01_test01_hello')

name = '赵四'

demo01_test02.py 源码:

import base.demo01.demo01_test01

base.demo01.demo01_test01.say()    #  调用test01中的say方法 输出 demo01_test01_hello

import sys

print(sys.path)
#['D:\\pycharm工作空间\\day12\\base\\demo01', 'D:\\pycharm工作空间\\day12', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\win32', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\win32\\lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\Pythonwin', 'C:\\Program Files\\JetBrains\\PyCharm 2018.3.2\\helpers\\pycharm_matplotlib_backend']

2.from...import...导入

from 包名.模块名... import 变量名

使用方式: 例如 变量名() 或者print(变量名)

demo01_test02.py 源码:

from base.demo01.demo01_test01 import say

say() # demo01_test01_hello

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

使用方式: 例如 变量名1() 或者print(变量名2)

demo01_test02.py 源码:

from base.demo01.demo01_test01 import say,name

say()
print(name)  # 调用test01中的name变量

from 包名 import 模块名

使用方式:模块名.变量名() 或者 print(模块名.变量名)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一二三四!

来来来!交个朋友,一起学习

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值