文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-05-19 14:44

关注

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项目引用运行路径内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯