在python3中的模块中导入兄弟文件

问题描述 投票:2回答:1

我的python项目有这个目录结构

├── main.py
└── util
    ├── color.py
    ├── __init__.py
    └── student.py

main.py是:

from util.student import fun
fun("calling fun from main")

color.py是:

def color_fun(a):
    print(a)

student.py是:

from color import color_fun

def fun(var):
    color_fun(var)

if __name__ == "__main__":
    fun("calling fun from student")

__init__.py是空的

当我尝试运行python3 student.py时,它按预期工作。但是当我尝试运行python3 main.py时它没有按预期工作,而它在python2中工作正常。

我想运行python3 student.py以及python3 main.py我怎么能实现这个目标?

python python-3.x python-import
1个回答
0
投票

您需要做的就是在student.py中稍作修改

def fun(var):
    color_fun(var)

if __name__ == "__main__":
    from color import color_fun
    fun("calling fun from student")
else:
    from util.color import color_fun

Python3的PYTHONPATH导致了这个问题

© www.soinside.com 2019 - 2024. All rights reserved.