python 一个能彻底理解包、模块引入的核心概念

最近几天居然被一个很基础的问题给困扰了。接触python不久,总是会报告有

No module named 'xxxx' 之类的问题。

查文档,都是说引入的问题。但问题来了,我在各自目录下的测试代码没有问题,但是一旦从应用的主文件开始执行,就会报错,而且很多本来单元测试都没问题的,都报错了。

百思不得其解。

甚至同一目录下的不同模块的互下引用,都会报找不到。这在我看来,太奇怪了,一定是有一个基础概念,我理解错了。我想。

就在我从网上看各种模块引用的文章的时候,大部份都是雷同的,但有一句突然引起我的注意。

主程序所在的目录,是本次执行环境的Root

我想,这应该是问题的根源。

举例说明吧:

app -------__init__.py

     | -------main.py

     | -------packageA ------- __init__.py

     |                         | ------- aaaa.py

     |                         | ------- test_aaaa.py

     | -------packageB ------- __init__.py

                               | ------- bbbb.py

如果是这个结构,从main.py开始执行,和从test_aaaa.py开始执行,引用的路径是不一样的。

所有的引用路径,需要从主文件的目录作为 root 来出发来写。

如果 main.py 是主文件,则在test_aaaa.py中引用需要这么写:

import app.packageA 或是 from app.packageA import aaaa

import app.packageB 或是 from app.packageB import bbbb

如果 test_aaaa.py 是主文件,则在test_aaaa.py中引用需要这么写:

import aaaa

import sys

sys.path.append("../") 要加入环境变量,否则,引用不到

import packageB.bbb 或是 from bbb import packageB

python 中引用包,模块,类这个问题的最核心的知识点就是这个了。理解了这个,再复杂的引用关系也是手到擒来。

后面,再也没有出过这种问题了。为什么在网上没有找到一篇文章讲解这个内容,还是我有哪份文档没有看到?

记录一下,希望能解其他朋友的困惑

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值