解决python3 导入自定义模块失败

python3 导入自定义模块失败

例:在test.py 文件中调用 test_src.py 中的函数

在这里插入图片描述

# test.py
from src import test_src
test_src.run()
# test_src.py
def run():
    print("In src_test!")
#运行 python test.py 返回结果
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    from src import test_src
ImportError: No module named 'src'

错误原因:执行文件和模块不在同一目录,这时候直接import是找不到自定义模块

解决方法:

  • 首先了解模块的查找顺序
  • 知道一些路径相关知识

import模块的查找模块的顺序如下:
1、先从当前目录下找
2、当前目录下找不到的话,在从sys.path的路径找

print(__file__)
print(os.path.abspath(__file__))  # 获取当前文件的绝对路径
print(os.path.dirname(os.path.abspath(__file__)))  # 去掉文件名,返回目录
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  # 返回上2级目录

输出:

test.py
/home/sangfor/桌面/pathTest/intelligent/bin/test.py
/home/sangfor/桌面/pathTest/intelligent/bin
/home/sangfor/桌面/pathTest/intelligent

所以我们将代码进行改进

在这里插入图片描述
改进后的运行结果
在这里插入图片描述
还可以这样,在父级目录下的 __init__.py 文件中写入(前提:在工程中父级目录被当做一个包调用过)
在这里插入图片描述

import sys,os
path = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, path)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值