Python 跨目录调用模块 跨文件调用模块

背景:

即使是写一个比较小的程序,也肯定会有人建议你将程序模块化。程序模块化必然涉及跨文件调用和跨目录调用,即Python中最常见的import modulefrom module import xxx。类似C中的#include
如果你足够幸运,肯定会遇见那个她:
ModuleNotFoundError: No module named 'c'
或者这个她:
ImportError: cannot import name 'ccc' from 'lib' (unknown location)
一定是缘分吧,这意味着你需要花一定的时间进行专题训练了!GO

训练场

  1. 同级目录跨文件调用
    if name == 'main’标记该模块为执行程序
  2. 调用当前目录的子目录中的模块,即调用当前目录中包的模块
    每一个包都需要创建一个__init__.py,该文件允许为空
    在这里插入图片描述
    某书籍有说这里需要将packet_A的路径加入sys.path。比如sys.path.append('/packet_A') 在下验证中发现并不需要。原因大概是packet_A这个包的路径已经在__file__(执行程序的绝对路径,不包含文件名),而__file__已经在sys.path中。
  3. 调用父目录中的模块
    在这里插入图片描述
    4.调用父目录中子目录中的模块,即调用父目录中包的模块
    4.1 将module_C.py这个模块的路径加入sys.path
    在这里插入图片描述
    4.2 将packet_B这个包的路径加入sys.path,然后调用这个包中模块module_C.py
    在这里插入图片描述
    5.第5种情况,调用包中嵌套的包中的模块。
    在这里插入图片描述

总结

以上5种示例,其实都源于一个逻辑:
只要我们确定待导入模块或待导入包所在的路径,并把这个路径告诉Python,Python就可以找到这个模块了

Tips

sys.append()加入的是包所在的路径,那么导入该包中的模块
需要用 from 包 import 模块

sys.append()加入的是模块所在的路径,那么导入该包中的模块
可以直接 import 模块
还可以 from 模块 import 方法

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值