发布时间: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 20:30:19

Python生成器深度解析:从原理到实战,高效处理海量数据

1. 项目概述&#xff1a;为什么我们需要生成器&#xff1f;在Python的世界里&#xff0c;处理海量数据或者构建复杂的数据流管道时&#xff0c;我们常常会遇到一个两难的选择&#xff1a;要么一次性把所有数据加载到内存里&#xff0c;导致程序卡顿甚至崩溃&#xff1b;要么就得…

2026/8/18 20:30:19

计算机扫盲:网络到底是怎么回事?

刚子,连不上网别摔路由器, 网络到底是怎么回事? 刚子最近很郁闷,他花大价钱办了“千兆宽带”,路由器闪蓝光,手机WiFi信号满格。但他看视频还是转圈,打游戏总掉线,下载个电影提示“剩余时间2天”。最气人的是,客服说“网络正常”,刚子只想把路由器从窗户扔出去。 他…

2026/8/18 20:25:19

AtCoder Beginner Contest 181-200

AtCoder Beginner Contest 181 AtCoder Beginner Contest 181-CSDN博客 AtCoder Beginner Contest 182 AtCoder Beginner Contest 182_[abc182d] wandering-CSDN博客 AtCoder Beginner Contest 183 AtCoder Beginner Contest 183_atcoder183题解-CSDN博客 AtCoder Beginner Con…

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;一天定稿首…