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

python3 导入自定义模块失败

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

解决python3 导入自定义模块失败_第1张图片

# 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

所以我们将代码进行改进

解决python3 导入自定义模块失败_第2张图片
改进后的运行结果
在这里插入图片描述
还可以这样,在父级目录下的 __init__.py 文件中写入(前提:在工程中父级目录被当做一个包调用过)
在这里插入图片描述

import sys,os
path = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, path)

你可能感兴趣的:(python)