深入解析python项目引用运行路径

 更新时间:2023年05月09日 11:00:31   作者:一休哥※  
这篇文章主要介绍了python项目引用运行路径的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

python项目引用运行路径的问题

获得当前文件的绝对路径

Path(file).resolve() 是使用 pathlib 库获取当前 Python 脚本的绝对路径的方法。这里的 file 是一个内置变量,表示当前脚本的文件名。Path(file) 将这个文件名转换为一个 Path 对象,resolve() 方法将相对路径转换为绝对路径。

FILE = Path(__file__).resolve()

获取父文件目录

ROOT = FILE.parents[0]  # YOLOv5 root directory

获取当前文件相对于 ROOT 的相对路径

这行代码将 ROOT 变量设为当前工作目录 Path.cwd() 相对于 ROOT 的相对路径os.path.relpath() 函数用于计算从 start 目录到 path 的相对路径。在这个例子中,start 目录是当前工作目录(Path.cwd()),path 是 ROOT。

ROOT = Path(os.path.relpath(ROOT, Path.cwd()))  # relative

如何将run/tools/main文件的运行路径改为run/

os.path.abspath(file) 获取当前运行的脚本文件的绝对路径。
os.path.dirname() 函数获取包含该文件的目录。最后,os.chdir() 函数更改当前工作目录到包含脚本文件的目录。
os.getcwd() 获得相对路径

import os
import sys
# Change the working directory to 'run/'
os.chdir(os.path.dirname(os.path.abspath(__file__)))
# Add 'run/tools/' to the import path
sys.path.append(os.path.join(os.getcwd(), 'tools'))
# Import and run the main function from 'run/tools/main.py'
from main import main
if __name__ == '__main__':
    main()

补充:Python引用路径

0、官方建议,总是优先使用绝对引用,只有在引用路径较为复杂导致引用代码很长时,才考虑使用相对引用。

绝对引用
优点是清晰且直接,可以很容易就确定引用文件位置;且即使当前文件的位置发生变化,导入语句仍然有效。
缺点是当引用路径较为复杂时,导入语句很长,如:
from package1.subpackage2.subpackage3.subpackage4.module5 import function6

相对引用
最直观的优点就是简洁,在包层次结构较为复杂时,相对引用能够借助于.以较短的代码实现快速的引用。
缺点是较为凌乱,在项目文件位置发生变更时,不易维护;此外,相对引用可读性较差。较难根据引用代码确定引用文件路径。
相对引用的限制:使用了相对引用的py文件,不能作为执行文件。需要在这个py路径之外的py文件调用。

1、Windows:引用文件的目录是以当前执行文件为根目录去搜索的。

Linux:引用文件的目录是以终端中的打开的文件夹为根路径去搜索的。

2、其他文件内引用的相对路径文件可以使用项目根目录+相对路径的方式获得。

1、project_name = 'crop_and_angle_classifier'  # 设置工作项目名称
2、project_path = os.getcwd().split(project_name)[0] + project_name  #以此方式获得项目根目录
   备注:获取上一级目录的方式:os.path.dirname(BaseDir)
        或者__dir__ = pathlib.Path(os.path.abspath(__file__))
           sys.path.append(str(__dir__.parent.parent))
3、sys.path.append(project_path)  #将项目根目录添加进搜索路径
4、model_weight_path = project_path + "/weight/mobilenet_v3_large.pth" #在其他所有文件中采用这种方式获得所需文件的绝对路径

3、跨目录调用py文件里的方法也是
  1、先将根目录添加进搜索路径    
  2、from 根目录下的文件 import 所需的方法

4、在编写代码时候,只需要先确定一个根目录,即project path,然后,其它文件里面的引用from xxx import xxx时候,都是改为从根目录开始的引用。但是这时候会出现引用的文件下面有红线,即找不到文件,而且你在这个文件内直接运行也会报错,这是因为你运行的文件没有将项目根目录加进去,所以这时候只需利用方法2,将项目根目录加进去就可以顺利运行啦。

到此这篇关于python项目引用运行路径的问题的文章就介绍到这了,更多相关python项目引用运行路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实战之Elasticsearch的高级实现详解

    Python实战之Elasticsearch的高级实现详解

    Elasticsearch是一个功能强大的开源搜索引擎,广泛应用于各种场景,本文将深入探讨如何使用Python与Elasticsearch进行高级实现,需要的可以参考下
    2024-04-04
  • pytorch的梯度计算以及backward方法详解

    pytorch的梯度计算以及backward方法详解

    今天小编就为大家分享一篇pytorch的梯度计算以及backward方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 简单探讨一下python线程锁

    简单探讨一下python线程锁

    本文主要介绍了简单探讨一下python线程锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 7个提高Python代码运行效率的小技巧

    7个提高Python代码运行效率的小技巧

    提高Python代码的运行效率是每个Python开发者都关心的问题,本文有7个可以提高Python代码运行效率的小贴士,希望对大家有一定的帮助
    2024-11-11
  • Python正则表达式中group与groups的用法详解

    Python正则表达式中group与groups的用法详解

    本文主要介绍了Python正则表达式中group与groups的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python如何标准化日期时间格式转化成非标准化格式

    python如何标准化日期时间格式转化成非标准化格式

    这篇文章主要介绍了python如何标准化日期时间格式转化成非标准化格式问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python排序搜索基本算法之堆排序实例详解

    Python排序搜索基本算法之堆排序实例详解

    这篇文章主要介绍了Python排序搜索基本算法之堆排序,结合实例形式详细分析了堆排序的原理、Python实现方法及相关操作注意事项,需要的朋友可以参考下
    2017-12-12
  • Python使用PIL库拼接图片的详细教程

    Python使用PIL库拼接图片的详细教程

    在图像处理中,拼接图片是一项常见的任务,无论是为了创建全景图、合并多张图片,还是为了展示对比,拼接图片都能带来很大的便利,Python的Pillow库(PIL的一个分支)提供了强大的图像处理功能,包括图片的拼接,下面是一个详细的教程,需要的朋友可以参考下
    2024-12-12
  • python爬取”顶点小说网“《纯阳剑尊》的示例代码

    python爬取”顶点小说网“《纯阳剑尊》的示例代码

    这篇文章主要介绍了python爬取”顶点小说网“《纯阳剑尊》的示例代码,帮助大家更好的利用python 爬虫爬取数据,感兴趣的朋友可以了解下
    2020-10-10
  • 基于Python实现有趣的象棋游戏

    基于Python实现有趣的象棋游戏

    一直以来,中国象棋都是中华民族的一种象征,当然也是人们最为喜感的一种娱乐方式。这篇文章主要介绍了如何基于Python实现有趣的象棋游戏,感兴趣的可以了解一下
    2023-03-03

最新评论