You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本相对路径依赖执行目录,如何实现任意位置运行都正常?

解决方案

报错的核心原因是:.开头的相对路径默认基于执行python命令时的当前工作目录解析,而非脚本文件本身的存放目录,切换执行目录后路径解析结果就会出错。

方法1:使用os.path模块(兼容所有Python版本)

  • 第一步:导入os模块,先获取当前脚本所在目录的绝对路径
import os
# 获取当前脚本文件的绝对路径对应的所属目录
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
  • 第二步:基于脚本目录拼接资源文件的相对路径(此处的相对路径以脚本文件的存放位置为基准,你的脚本与resources目录同属files目录,所以按如下方式拼接)
font_path = os.path.join(SCRIPT_DIR, "resources", "COMIC.TTF")
  • 第三步:替换原有路径调用即可
font = pygame.font.Font(font_path, 12)

方法2:使用pathlib模块(Python 3.4+ 推荐,语法更简洁)

  • 第一步:导入Path类,获取脚本所在目录
from pathlib import Path
SCRIPT_DIR = Path(__file__).resolve().parent
  • 第二步:拼接资源路径
font_path = SCRIPT_DIR / "resources" / "COMIC.TTF"
  • 第三步:调用时直接传入即可,如你使用的pygame版本不支持Path对象,转为字符串即可:
font = pygame.font.Font(str(font_path), 12)

注意事项

  • 不要手动书写/或\这类路径分隔符,用os.path.join或pathlib的/运算符可以自动适配不同操作系统的分隔符规则
  • 拼接路径时使用的相对路径,要以脚本文件本身的存放位置为基准书写,而非执行命令的目录

内容的提问来源于stack exchange,提问作者Jeffery Tang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:08