python中不同层级导包

提要

        在Python 中不能像 java 那样可以直接在一个项目下直接导包,先提前说一个概念:模块; 模块是一个完整的 Python 文件,以 .py 结尾,有的时候需要将一个模块 在父级目录导入子级目录、子级目录之间同级导入、子级目录导入父级的模块。如果是在 pycharm 中写代码是可以直接导入的,但是单独 使使用Python 解释器去运行,也就是在 cmd 中 : Python 模块ming.py 这种方式运行有可能回报错, xx.py 的模块找不到问题

目录介绍

         Python 中一个目录下如果存在__init__.py 表示这个目录是一个包,没有这个文件说明是一个目录;这个文件可以为空(我们测试的时候全部为空)
在这里插入图片描述
目录
test1
│ m1.py     用于存放父级同级调用的代码
│ m2.py     用于调用父级同级目录代码、调用子级目录、
init.py

├─a
│ │ x1.py     用于存放子级目录测试代码
│ │ y1.py    
│ │ init.py

├─b
│ │ test.py     用于测试子级目录相互调用、子级目录调用父级目录代码
│ │ init.py

1、父级目录相互调用、父级调用子级目录

父级目录
在这里插入图片描述
子目录
在这里插入图片描述

m1.py

def tm1():
    print("这:是m1")

m2.py

# 同级调用: 直接导入即可,但是在 pycharm 中会会出现红线报错但是不影响运行
from m1 import tm1

tm1()

# 父级目录调用子级目录 : 从子目录往下寻找即可,但是在pycharm 中会会出现红线报错但是不影响运行
from a.x1 import fun

fun()

# 父级目录导入整个子级目录
from a import x1
x1.fun()

x1.py

def fun():
    print("这是子目录a的fun")

cmd中运行
在这里插入图片描述

2、子目录的同级调用、子目录调用父级目录

b => test.py

# 子级目录调用同级的子级目录:pycharm 中会会出现红线报错但是不影响运行
import sys

sys.path.append("..")
from a import x1

x1.fun()

# 子级目录调用父级目录
import sys

sys.path.append("../../")  # pycharm 中可以不加这个,但是在 cmd 中必须要加这个才行

from test1 import m1

m1.tm1()

其中 “…/” 表示上一级目录
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值