1、在python中,一个python文件就可以视为一个模块进行导入
2、使用import 导入时,若使用pip 下载过可以直接导入
3、假如是自己写的同项目中的文件会去sys.path 中查找
比如说 我现在 test 下有一个 python文件
运行 下面的代码 打印的数据如上图所示
print(sys.path)
在结果中会有这两个本地文件的路径
E:\\JAVA_CODE\\spark\\ProjectSparkShuCang\\com\\bigdata\\test
E:\\JAVA_CODE\\spark\\ProjectSparkShuCang
所以要想导入相同文件下或者子文件下的路径 直接import 文件名称即可 或者可以添加from 子文件名称.py文件 import *
若是想要导入同级目录文件 比如上面要导入utils文件下的py文件 可以从该项目路径开始 即第二个路径
就是这个写法
from com.bigdata.utils.SparkUtils import SparkUtils
但是我们要是将python文件传到服务器上时,就没有第二个路径了,所以我们之前导入同级文件或者上级文件下的py文件就会出现问题
解决方式:
current_dir = os.path.dirname(os.path.abspath(__file__))
# 获取上级目录
parent_dir = os.path.dirname(current_dir)
# 将上级目录添加到 sys.path
if parent_dir not in sys.path: # 避免重复添加
sys.path.append(parent_dir+"\\utils")
添加上面的代码就可以在sys.path中添加一个上级路径,比如说我在test.py中运行就会添加一个
E:\\JAVA_CODE\\spark\\ProjectSparkShuCang\\com\\bigdata 路径 拼接后面的"\\utils" 就可以导包了—— 以这种方式即可 from SparkUtils import SparkUtils
但是在服务器上文件路径是/ 这种类型的 只需要 将 \\ 变为 / 即可