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
相关产品推荐
相关产品推荐

