发布时间:2026/8/18 19:14:44
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)

相关新闻

2026/8/18 19:14:44

@EnableRetry注解解读

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

2026/8/18 19:14:44

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

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

2026/8/18 19:14:44

GDB 使用指南

GDB 官网 https://www.sourceware.org/gdb/ GDB 是什么东西&#xff1f; GDB, the GNU Project debugger, allows you to see what is going on inside’ another program while it executes – or what another program was doing at the moment it crashed. &#x1f447; …

2026/8/18 21:25:23

英辰朗迪GEO知识库第98期:语义完整性如何决定AI引用意愿

一个页面写了 3000 字&#xff0c;关键词密度也够&#xff0c;AI 就是不引用它。问题十有八九不在字数&#xff0c;在语义完整性——也就是这页纸有没有把主题相关的相邻概念都讲全。一、说清楚这是什么AI 判断一个页面是不是"专家"&#xff0c;看的不是单一关键词&a…

2026/8/18 21:25:23

数字毫秒计原理与应用:从高精度时间测量到工程实践

1. 项目概述&#xff1a;从“计时”到“测时”的精度跃迁 在电子、通信、自动化乃至基础物理实验领域&#xff0c;时间测量从来都不是一个简单的“看表”问题。当我们需要测量的时间间隔短至毫秒&#xff08;ms&#xff09;、微秒&#xff08;μs&#xff09;甚至纳秒&#xff…

2026/8/18 21:25:22

Python开发付费自习室小程序:核心功能与架构设计

1. 项目概述&#xff1a;Python付费选座自习室小程序 自习室行业近年来在国内快速发展&#xff0c;尤其在一二线城市已经成为年轻人学习充电的热门场所。传统自习室管理存在座位分配混乱、预约效率低下、收费不透明等问题。这个Python开发的小程序正是为了解决这些痛点而生。 …

2026/8/18 21:25:22

小红书开源DOTS3-Note生活智能体:从原理到实践构建AI生活助手

如果你最近在关注AI Agent领域&#xff0c;可能会发现一个有趣的现象&#xff1a;很多演示视频里的智能体&#xff0c;要么在写代码、分析文档&#xff0c;要么在操作浏览器。它们似乎很“聪明”&#xff0c;但总感觉离我们的日常生活有点远——毕竟&#xff0c;不是每个人每天…

2026/8/18 21:25:22

从家庭电费账单到商业洞察:Python数据分析完整项目实战

很多想转行数据分析的朋友&#xff0c;都卡在了一个尴尬的境地&#xff1a;学了一堆Pandas、Matplotlib的语法&#xff0c;看懂了教程里的“鸢尾花”数据集&#xff0c;但面对一份真实的、杂乱的家庭电费账单Excel时&#xff0c;却不知道从何下手&#xff0c;更别提做出能说服人…

2026/8/18 21:20:22

Git分支工作流实战指南:从Git Flow到Trunk-Based Development

1. 从“分支”到“工作流”&#xff1a;为什么你的Git仓库需要一套章法 如果你已经熟悉了 git branch 、 git checkout 和 git merge 这些基础命令&#xff0c;可能会觉得分支管理不过如此——不就是创建、切换、合并嘛。但当你真正参与到一个多人协作、功能迭代频繁、线…

2026/8/17 10:49:52

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

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

2026/8/18 6:58:27

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/18 0:02:05

Qwen3.8-27B本地部署实战:17GB内存运行270亿参数大模型

1. 这篇文章真正要解决的问题 你是否曾对动辄需要上百GB显存才能运行的百亿参数大模型望而却步&#xff1f;是否觉得在个人电脑上部署一个功能强大的语言模型是天方夜谭&#xff1f;最近&#xff0c;通义千问团队发布的 Qwen3.8-27B 模型&#xff0c;宣称仅需 17GB 内存即可在本…

2026/8/18 0:02:05

ME3169 36V,8A,180KHz 恒压Buck DC-DC 转换器

概述ME3169 是一款180KHz&#xff0c;PWM 模式恒压Buck DC-DC 转换器&#xff0c;8V 到36V 宽工作电压范围&#xff0c;低纹波&#xff0c;内置低导通电阻功率MOS。ME3169 内置环路补偿电路&#xff0c;可以减少外围元器件数量。内部设计有恒压环路&#xff0c;可以通过外部电阻…

2026/8/18 18:23:10

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/17 17:27:06

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/18 7:12:40

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具&#xff0c;覆盖选题构思、文献整理、内容生成、格式排版等核心场景&#xff0c;真正帮你高效搞定论文难题。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首…