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

Jupyter Notebook中导入函数无法找到文件路径的问题求助

问题原因分析

你遇到的FileNotFoundError本质是相对路径的基准目录不一致:

  • 在Notebook中直接读取文件时,相对路径以Notebook的当前工作目录(project文件夹)为基准,你写的路径(应为pipeline/library/data.csv)能正确定位到文件。
  • 但myfunction定义在pipeline/functions.py中,从Notebook调用该函数时,函数内部的library/data.csv仍以Notebook的工作目录(project)为基准,实际会查找project/library/data.csv——这个路径不存在,真正的目标路径是project/pipeline/library/data.csv。
解决方案

最健壮的做法是基于functions.py自身的位置构建文件路径,确保无论从哪个目录调用函数,都能正确找到data.csv。修改myfunction代码如下:

import os
import sys
import pandas as pd

def myfunction(df):
    # 获取当前functions.py文件所在的绝对目录
    script_dir = os.path.dirname(os.path.abspath(__file__))
    # 安全拼接data.csv的绝对路径
    libpath = os.path.join(script_dir, 'library', 'data.csv')
    
    try:
        lib_df = pd.read_csv(libpath)
    except OSError:
        print(f'library not found for given filepath: {libpath}')
        sys.exit()
        
    df = df['molecule'].apply(is_covalent, lib_df)
  
    return df

关键说明:

  • __file__:Python自动为脚本文件设置的变量,指向当前脚本(functions.py)的路径。
  • os.path.abspath(__file__):获取functions.py的绝对路径。
  • os.path.dirname(...):从绝对路径中提取脚本所在的目录(即project/pipeline)。
  • os.path.join(...):跨平台安全拼接路径,避免手动字符串拼接的路径格式问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:09:39