sys.path 与 os.getcwd区分:代码运行中的路径问题
获取当前工作目录import sys print(sys.path[0])获取执行命令的位置import os print(os.getcwd())python 代码运行路径问题在下载使用别人的代码进行运行时有时会遇到路径问题。将自己目前遇到的进行分类和总结。主要分为两类import相关 open文件相关问题的来源是IDE和cmd的默认工作路径的差异或模块搜索路径不同。即可能是自己和对方使用的IDE的不同默认工作路径导致的。当前工作目录文件读写等相关操作使用的基本路径。通过函数os.getcwd()获得通过函数os.chdir()改变os.path功能作为对路径进行操作的模块注意在cmd下运行时 文件组织 folder file.py python folder/file.py 当前工作目录在父亲目录 python file.py : 当前工作目录在folder下常见问题打开文件描述符时出错找不到对应的文件FileNotFoundError: [Errno 2] No such file or directory解决修改要读写的文件路径系统搜索路径sys.path数据类型字符串数组 功能确定模块搜索路径 初始化系统环境变量PYTHONPATH 默认安装路径比如在终端输入export PYTHONPATH$PYTHONPATH:/home/.../MinkLoc3Dv2常见问题import 模块时出错需要导入的的代码不在sys.path中ModuleNotFoundError: No module named解决将对应模块所在的路径加入到sys.path中。比如在代码中加入sys.path.append(‘/home/zs/project/github/minkloc3d/MinkLoc3Dv2’)如果对应模块在子文件夹下可以通过在子文件夹下创建init.py文件解决。相当于对子文件目录升级为模块附件资料标题os.getcwd()、sys.path[0]、sys.argv[0]和__file__的区别os.getcwd()、sys.path[0]、sys.argv[0]和__file__的区别,终于弄清楚了要分清这几个的区别与使用条件实际测试一下是最准确的。设计测试方法一个主模块用来运行一个子模块用来被主模块调用 主模块路径/Users/stephen/Documents/code/test_dir/01test子模块路径/Users/stephen/Documents/code/test_dir/02test运行模块的路径/Users/stephen/Documents/code/test_dir/01test/001_testok 现在编写两模块代码子模块 submodule.py import os import sys def child_test(): print(sub os.getcwd():{}.format(os.getcwd())) print(sub sys.path[0]:{}.format(sys.path[0])) print(sub sys.argv[0]:{}.format(sys.argv[0])) print(sub __file__:{}.format(__file__)) if __name__ __main__: chid_test() 主模块 mainmodule.py import os import sys import submodule def main(): print(main os.getcwd():{}.format(os.getcwd())) print(main sys.path[0]:{}.format(sys.path[0])) print(main sys.argv[0]:{}.format(sys.argv[0])) print(main __file__:{}.format(__file__)) submodule.child_test() if __name__ __main__: main()目录结构├── 01test │ ├── 001_test # 运行目录 │ └── mainmodule.py # 主模块 └── 02test └── submodule.py # 被调用模块ok 来看看结果Traceback (most recent call last): File ../mainmodule.py, line 3, in module import submodule ModuleNotFoundError: No module named submodule我去出现了点小状况原因是系统找不到该模块的路径我们来人工添加一个路径在主模块中前面添加sys.path.append(‘/Users/stephen/Documents/code/test_dir/02test/’)再来试试 - -结果如下main os.getcwd():/Users/stephen/Documents/code/test_dir/01test/001_test main sys.path[0]:/Users/stephen/Documents/code/test_dir/01test main sys.argv[0]:../mainmodule.py main __file__:../mainmodule.py sub os.getcwd():/Users/stephen/Documents/code/test_dir/01test/001_test sub sys.path[0]:/Users/stephen/Documents/code/test_dir/01test sub sys.argv[0]:../mainmodule.py sub __file__:/Users/stephen/Documents/code/test_dir/02test/submodule.py结合目录结构看就清楚了├── 01test │ ├── 001_test # 运行目录 │ └── mainmodule.py # 主模块 └── 02test └── submodule.py # 被调用模块 os.getcwd() 指的是运行程序的目录 (绝对路径) sys.path[0] 主要模块的目录 绝对路径 sys.argv[0] 运行模块时pyhton 后面的参数 __file__ 这个就有点奇怪了主模块显示的相对路径而被调用模块却用的绝对路径 __file__ 还是有点疑虑于是去 stack overflow(click to)看到了这句话如下 So, if you are outside the part of sys.path that contains the module, youll get an absolute path. If you are inside the part of sys.path that contains the module, youll get a relative path. If you load a module in the current directory, and the current directory isnt in sys.path, youll get an absolute path. If you load a module in the current directory, and the current directory is in sys.path, youll get a relative path.意思大致是如果你(你所在的当前目录)不在sys.path的范围里你会得到绝对路径反之你会得到相对路径如果你在当前目录加载模块并且当前目录在sys.path 里 你会得到相对路径。对比上面的结果符合。不过我们还是应该再来验证下。我们把当前路径换到子模块下├── 01test │ ├── 001_test │ └── mainmodule.py # 主模块 └── 02test # 当前目录 └── submodule.py # 被调用模块结果如下main os.getcwd():/Users/stephen/Documents/code/test_dir/02test main sys.path[0]:/Users/stephen/Documents/code/test_dir/01test main sys.argv[0]:../01test/mainmodule.py main __file__:../01test/mainmodule.py sub os.getcwd():/Users/stephen/Documents/code/test_dir/02test sub sys.path[0]:/Users/stephen/Documents/code/test_dir/01test sub sys.argv[0]:../01test/mainmodule.py sub __file__:/Users/stephen/Documents/code/test_dir/02test/submodule.py是不是觉得有问题幸亏我们测试了突然想起我我运行mainmodule用的相对路径像这样$ python …/01test/mainmodule.py然后__file__就是相对路径的如果我们换成绝对路径呢$ python /Users/stephen/Documents/code/test_dir/01test/mainmodule.py结果如下main os.getcwd():/Users/stephen/Documents/code/test_dir/02test main sys.path[0]:/Users/stephen/Documents/code/test_dir/01test main sys.argv[0]:/Users/stephen/Documents/code/test_dir/01test/mainmodule.py main __file__:/Users/stephen/Documents/code/test_dir/01test/mainmodule.py sub os.getcwd():/Users/stephen/Documents/code/test_dir/02test sub sys.path[0]:/Users/stephen/Documents/code/test_dir/01test sub sys.argv[0]:/Users/stephen/Documents/code/test_dir/01test/mainmodule.py sub __file__:/Users/stephen/Documents/code/test_dir/02test/submodule.pysoga!终于弄清楚了突然有种小兴奋啊总结一下os.getcwd() 指的是当前目录绝对路径 sys.path[0] sys.path 指的是pathsys.path[0]为主模块目录的绝对路径在模块运行的时候被自动添加进去 sys.argv[0] 就是你运行时 python 后面跟的参数 __file__ 表示所在模块文件的路径和系统找到该模块的方式有关你是用绝对路径去加载该模块那么__file__就为绝对模块文件路径如果你给系统提供相对路径去加载该模块那么改文件路径为相对路径案例demo自己的工程代码修改了自己的代码然后单卡上能跑到自己修改的代码但是多卡训练的时候就跑不到自己修改的代码像是跑到了pip安装的库。原因是需要加上下面的代码注一在终端或者~/.bashrc里直接添加PYTHONPATH/data/perception/bev/adb/adb_code/ADB_DLA:$PYTHONPATH不管用_p os.environ.get(“PYTHONPATH”, “”)os.environ[“PYTHONPATH”] “/data/perception/bev/adb/adb_code/ADB” (os.pathsep _p if _p else “”)importos os.chdir(os.path.dirname(__file__))importsys sys.path.insert(0,/data/perception/bev/adb/adb_code/ADB)# 多卡 DDP 子进程由 torchrun 拉起需能 import 本地 ultralytics非 pip 安装通过 PYTHONPATH 传递_pos.environ.get(PYTHONPATH,)os.environ[PYTHONPATH]/data/perception/bev/adb/adb_code/ADB(os.pathsep_pif_pelse)

相关新闻

@EnableRetry注解解读

@EnableRetry注解解读

<dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId></dependency> 前言 在分布式系统、微服务架构以及对外部服务&#xff08;如数据库、第三方API、消息队列&#xff09;的调用中&#xf…

2026/8/18 19:14:29 阅读更多 →
【2014-04-27】windows用户管理命令

【2014-04-27】windows用户管理命令

[历史归档] 本文原发布于 cstriker1407.info 个人博客&#xff0c;内容为历史存档&#xff0c;仅供参考。 发布时间&#xff1a; 2014-04-27 &#xff5c; 标题&#xff1a;windows用户管理命令 &#xff5c; 分类&#xff1a; 操作系统 / windows &#xff5c; 标签&…

2026/8/18 19:14:29 阅读更多 →
罗列几个提升WPF应用程序冷启动性能的方法!(Part 2)

罗列几个提升WPF应用程序冷启动性能的方法!(Part 2)

在上文中&#xff0c;我们主要介绍了针对三个技术的WPF应用程序性能提升&#xff0c;本文将着重介绍针对DevExpress WPF界面控件研发的应用程序如何提升性能&#xff01; 有用控件推荐~DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业…

2026/8/18 19:13:28 阅读更多 →

最新新闻

微信投票如何实现名次更新?掌握排名功能让评选活动更专业

微信投票如何实现名次更新?掌握排名功能让评选活动更专业

在校园评优、社区风采展示、门店人气评选、文艺作品征集等场景中&#xff0c;很多人都会选择依托微信开展线上投票活动。微信自带的投票功能虽然操作便捷&#xff0c;仅能满足简单的票数统计需求&#xff0c;最大的短板便是缺少可视化排名展示能力。整场投票过程名次不透明、数…

2026/8/18 19:56:47 阅读更多 →
私有化部署vs公有云SaaS:2026五大类智能陪练厂商技术架构与安全合规横评

私有化部署vs公有云SaaS:2026五大类智能陪练厂商技术架构与安全合规横评

本文目录&#xff1a;一、为什么企业级AI智能陪练系统对技术架构与数据安全要求极高&#xff1f;二、市场上的智能陪练厂商在部署模式与架构设计上有何不同&#xff1f;三、五大类智能陪练厂商在安全合规与系统集成能力上有何差异&#xff1f;四、中关村科金如何构建金融级私有…

2026/8/18 19:56:47 阅读更多 →
Qwen 3.8 27B开源大模型本地部署与实战指南

Qwen 3.8 27B开源大模型本地部署与实战指南

这次我们来看一个在开源社区引起热议的大语言模型&#xff1a;Qwen 3.8 27B。标题很直接&#xff0c;“免费击败 Claude Opus 4.6”&#xff0c;这背后反映的是当前开源模型在性能上对闭源商业模型的追赶态势。对于开发者、研究者和希望将大模型能力本地化的团队来说&#xff0…

2026/8/18 19:56:47 阅读更多 →
在终端运行x86 DOS,为mipsel编译tiny386

在终端运行x86 DOS,为mipsel编译tiny386

现在为ARM架构构建的x86虚拟机较多&#xff0c;但为一些嵌入式轻量平台如mipsel构建的较少&#xff0c;为节约mipsel的运行资源&#xff0c;本次编译基于Tiny386进行修改&#xff0c;加入了终端显示80*25的VGA文本和从终端读取输入&#xff0c;以实现在终端运行DOS&#xff0c;…

2026/8/18 19:56:47 阅读更多 →
可解释智能体系统:基于摘要记忆的对话反诈技术解析

可解释智能体系统:基于摘要记忆的对话反诈技术解析

1. 项目缘起&#xff1a;为什么我们需要一个“会解释”的对话反诈系统&#xff1f; 最近几年&#xff0c;无论是工作还是生活&#xff0c;我们与AI对话的频次越来越高。从客服机器人到智能助手&#xff0c;再到各种社交应用里的“虚拟伴侣”&#xff0c;对话式AI已经无处不在。…

2026/8/18 19:56:47 阅读更多 →
HTTP QUERY方法详解:复杂查询的标准化解决方案与Spring Boot实践

HTTP QUERY方法详解:复杂查询的标准化解决方案与Spring Boot实践

在 HTTP 协议的发展历程中&#xff0c;GET、POST、PUT、DELETE 等方法是开发者最熟悉的工具。然而&#xff0c;随着应用场景的复杂化&#xff0c;特别是对复杂查询和搜索需求的增长&#xff0c;传统的 GET 方法在语义和功能上开始显得力不从心。GET 方法虽然用于获取资源&#…

2026/8/18 19:55:47 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图&#xff1a;用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手&#xff1a;7个字重免费商用&#xff0c;从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻&#xff1a;设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南&#xff1a;GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者&#xff0c;最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent&#xff0c;从本地部署到云端API&#xff0c;我们正处在一个技术栈快速重构的节点。然而&#xff0c;面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →