Python 官方文档:入门教程 => 点击学习
这篇文章主要介绍“python多模块引用由此引发的相对路径混乱问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python多模块引用由此引发的相对路径混乱问题怎么解决”文章能帮助大家解决问
这篇文章主要介绍“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.pydef 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.pydef 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.pydef 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多模块引用由此引发的相对路径混乱问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。
--结束END--
本文标题: Python多模块引用由此引发的相对路径混乱问题怎么解决
本文链接: https://lsjlt.com/news/350587.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0