栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于Python中不同文件夹的函数相互调用的问题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Python中不同文件夹的函数相互调用的问题

前言

博主最近在弄Python相关的东西,想将YOLOv3部署到flask上做个小demo,结果在flask调用yolo函数时频繁出现问题。百度上找了好多博客还是感觉没搞清楚就自己做了个套娃调用,给大家分享一下

结果截图



如图,每个文件夹中都有一个hello.py,其中代码我后面会贴出来。最后效果就是upload里的hello.py调用test2中的hello.py,test2中的hello.py调用test3中的hello.py,test3中的hello.py调用test4中的hello.py,简单说就是套娃。博主写这个demo就是想测试能不能调用离启动目录很远的子文件中的函数,现在证明是可以的

源码展示

test4中hello.py写的是:

def hello_test():
    print('hello world for test4')
    return 'test4'

test3中hello.py写的是:

from test2.test3.test4 import hello

def hello_test():
    print('hello world for test3 ' + hello.hello_test())
    return 'test3'

test2中hello.py写的是:

from test2.test3 import hello

def hello_test():
    print('hello world for test2 ' + hello.hello_test())
    return 'test2'

test中hello.py写的是:

from test2 import hello

print('hello world ' + hello.hello_test())
原理

从每个hello.py中不能发现 想调用子文件夹的子文件夹中的函数,必须先找到这个模块。怎么找那?很简单,以启动目录为根目录,去寻找。
好比我现在在D:Pythonflaskupload这个目录里启动 hello.py,那么我们的根目录就是现在这个目录。那当文件要调用test2中的hello里的函数,就要先找到它,也就是from test2(这个文件夹)import hello(这个模块)。而这个模块有hello_test()的函数,调用就可以了。
同理,对于test2,它要调用test3时,那么在test2中需要从根目录找到要调用的test3中的hello.py的模块,即 from test2(这个文件夹) 下的 test3(文件夹)import hello(这个模块)
test3也同理

其实每个文件前面的from … import hello 要想好怎么从根目录导入
我的demo中根目录是 D:Pythonflaskupload
那么想调用 D:Pythonflaskuploadtest2 中的hello 就是
from test2 import hello

再简单点说
test2.test3.test4 就相当于 根目录/test2/test3/test4
这时再import 就相当于在 根目录/test2/test3/test4 寻找对应模块

希望能对大家有帮助

当然我在看博客的时候也有提到很多方法,包括创建 _ _ init_ _.py
还有用 sys.path.append 去添加路径
但我没完全搞懂这些方法就不班门弄斧了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/689001.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号