python中自定义模块的导入

背景:

最近用jenkins跑python自动化时,出现了模块之间引入总是类似下面的错误,所以总结了一下常见的模块导入场景

ModuleNotFoundError: No module named 'utils'

情形一、两个py文件在同一个目录,例如,在d1中导入d2的方法,直接使用from xx import xx 导入即可

#d1.py

from d2 import hello

hello()
#d2.py

def hello():
    print("i am d2")

执行`python d/d1.py`后,输出结果:

PS G:\test-python> python d/d1.py
i am d2

情形二:两个文件分别在两个目录,在e.py中导入f1的方法,需要使用sys模块加上path路径,一层目录加上一层相对路径../,如果多层,则多加上对应的../

#e.py
import sys
import os

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),"../")))

from f.f1 import hello

hello()
#f1.py
def hello():
    print("i am f")

运行e.py后的结果

PS G:\test-python> python e/e.py 
i am f

情形三:在情形二的基础上,加上f2.py,并且f1.py中需要导入f2.py的方法,需要注意的是,f1导入f2时,必须使用.f2格式,否则提示找不到模块

#e.py
import sys
import os

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),"../")))

from f.f1 import test

test()
#f1.py
from .f2 import hello

def test():
    print("i am f1,and import {}".format(hello()))
#f2.py
def hello():
    return "f2"

运行脚本结果

PS G:\test-python> python e/e.py
i am f1,and import f2

其他复杂情况可以类似衍生

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值