今天遇到运行时报错,找不到这个自定义模块,而这个模块就是文件夹里的config.py文件
我的报错源代码:
import sys
sys.path.append('../')
#../表示当前所在目录的父目录下的某个文件夹或文件
from config import BEST_WEIGHTS
from config import MAX_FGM_PERTURB_BATCH as BATCH_SIZE
我的文件夹布局是下面这样(我要运行的文件在attack_scripts文件夹里,而我需要导入的自定义模块是config.py)
按理来说,上面报错的部分'../' 能调用父文件夹里的config.py,但是报错显示
然后加了这一段,具体的功能见注释
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#os.path.abspath(__file__):这个是获取文件的基础路径
#os.path.dirname(dir):这个是获取文件的文件夹目录(相当于拿到了文件夹),dirname两层嵌套就相当于往上两级文件夹,这里一定要注意运行时cd的是几级文件夹,然后需要调用的函数在哪级,然后对应的调用
sys.path.append(BASE_DIR)
from config import * (config改成需要导入的自定义的模块名)
就能成功运行咯~