这篇文章主要介绍“Python多模块引用由此引发的相对路径混乱问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python多模块引用由此引发的相对路径混乱问题怎么解决”文章能帮助大家解决问题。
当不同层级的 Python 模块相互调用时,我们会发现原本在一个模块中写死的相对路径会导致找不到文件的报错。
这种问题该怎么解决呢?
复制下面的代码, 放到你的模块内 (或者保存为一个 .py 文件), 调用 relpath
函数即可.
def relpath(file):
""" Always locate to the correct relative path. """
from sys import _getframe
from pathlib import Path
frame = _getframe(1)
curr_file = Path(frame.f_code.co_filename)
return str(curr_file.parent.joinpath(file).resolve())
不到 10 行代码
无第三方库依赖
使用简单, 只需把原先写死的相对路径, 替换为 relpath({之前写的路径}) 即可
此外, Pycharm 还能够识别到文件参数, 在你键入时自动给出路径提示
someprj
|- relpath.py
|- A
|- a.py
|- AA
|- aa.py
|- AAA
|- aaa.py
|- B
|- b.txt
# A/a.py
def show_path():
from relpath import relpath
print(relpath('../B/b.txt'))
if __name__ == '__main__':
from A.AA import aa
from A.AA.AAA import aaa
show_path() # -> '/someprj/B/b.txt'
aa.show_path() # -> '/someprj/B/b.txt'
aaa.show_path() # -> '/someprj/B/b.txt'
# A/AA/aa.py
def show_path():
from relpath import relpath
print(relpath('../../B/b.txt'))
if __name__ == '__main__':
from A import a
from A.AA.AAA import aaa
show_path() # -> '/someprj/B/b.txt'
a.show_path() # -> '/someprj/B/b.txt'
aaa.show_path() # -> '/someprj/B/b.txt'
# A/AA/AAA/aaa.py
def show_path():
from relpath import relpath
print(relpath('../../../B/b.txt'))
if __name__ == '__main__':
from A import a
from A.AA import aa
show_path() # -> '/someprj/B/b.txt'
a.show_path() # -> '/someprj/B/b.txt'
aa.show_path() # -> '/someprj/B/b.txt'
关于“Python多模块引用由此引发的相对路径混乱问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。