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

跨目录调用含相对路径依赖的Python类时出现文件找不到错误

解决Python类中相对路径调用文件的问题

问题根源

你写的./geo_first_division相对路径,Python会以**运行app.py时的工作目录(也就是app_folder)**为基准查找文件,而不是class_geo.py所在的classes_folder目录,自然找不到目标文件夹。

可行解决方案

方法1:基于类文件目录构建路径(推荐)

在class_geo.py里,先获取当前文件的绝对目录,再拼接目标文件夹路径,这样不管从哪个目录启动脚本都能准确定位文件:

import os

class GeoClass:
    def fun1(self):
        # 获取当前类文件所在的绝对目录
        class_dir = os.path.dirname(os.path.abspath(__file__))
        # 拼接目标文件夹路径
        geo_folder = os.path.join(class_dir, 'geo_first_division')
        # 拼接具体geojson文件路径
        geojson_file = os.path.join(geo_folder, '你的文件名.geojson')
        # 后续读取文件操作...

如果用Python 3.4及以上版本,用pathlib语法更简洁直观:

from pathlib import Path

class GeoClass:
    def fun1(self):
        class_dir = Path(__file__).parent.resolve()
        geo_folder = class_dir / 'geo_first_division'
        geojson_file = geo_folder / '你的文件名.geojson'
        # 后续读取文件操作...

方法2:临时切换工作目录(不推荐)

在app.py开头添加代码,把工作目录切换到classes_folder:

import os

# 假设classes_folder和app_folder在同一层级,根据实际目录结构调整路径
os.chdir('../classes_folder')

# 再导入你的类
from class_geo import GeoClass

这种方法局限性强,如果app.py的其他功能依赖原工作目录,很容易引发新问题。

验证提示

  • 先确认geo_first_division文件夹确实和class_geo.py在同一目录下
  • 可以在代码里打印拼接后的路径,检查是否和实际文件路径一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:35:04