가져온 모듈이 Jupyter에서 업데이트되지 않는 문제 해결

문제 설명

최근 학부 졸업 프로젝트를 하다가 파이썬이 Jupyter에서 모듈이나 파일에 있는 함수를 import 한 후, 모듈이나 파일에 있는 함수가 변경되어 저장되면 모듈이 다시 호출될 때 원래 함수가 가져왔기 때문에 여전히 호출됩니다. 의 모듈 또는 함수가 업데이트되지 않았습니다.

FileNotFoundError: [Errno 2] No such file or directory:

그러나 작성자는 파일 읽기 경로를 변경했습니다.

import QDdata as QD
# QDdata.py
class QDloadStrokeData(data.Dataset):

    def __init__(self,no = 0, data_file=None,val = False, image_size=(96,96),transforms=None):
        
        if data_file == None:
            if val == True:
                data_file = "/root/quickdraw dataset after process/quickdraw-doodle-recognition/val/val_dataset.csv"
            else:
                data_file = "/root/quickdraw dataset after process/quickdraw-doodle-recognition/train/" + 'train_k{}.csv'.format(no)
                
        if os.path.exists(data_file) == False:
            print(data_file,"does not exist\n")

해결책

모듈을 가져올 때 다음으로 변경:

import some_module # some_module表示某个模块,首次导入
import imp # 导入imp包
imp.reload(some_module) # 重新导入模块

가져오기 기능인 경우 두 줄을 더 추가합니다.

from some_module import some_func # some_func某个函数,首次导入
import some_module # 防止reload报错
import imp
imp.reload(some_module)
from some_module import some_func # 再次导入

원인 분석:

(1) from some_module import some_func를 사용할 때 some_module 모듈을 import한 적이 없다면 some_module 모듈을 먼저 로드한 다음 사용할 some_func 함수만 some_module 모듈에서 현재 모듈로 로드합니다(즉, , 현재 실행 중인 파일) .
(2) some_func 함수가 로컬에서 수정된 후 some_func 함수를 다시 가져오려면 some_module 모듈이 이 파일에 로드되었기 때문에 from some_module import some_func를 다시 사용하는 것만으로는 충분하지 않습니다. 수정 전 some_module 모듈 이 시점에서 다시 가져오면 이 모듈의 원래 some_func 함수가 로드되므로 로컬 수정 사항이 적용되지 않습니다.
(3) 따라서 위의 코드를 사용하여 some_module을 다시 가져올 수 있습니다.

따라서 이전 모듈 가져오기는 다음과 같이 수정됩니다.

import QDdata as QD
import imp
imp.reload(QD)

문서 참조: (24개의 메시지) jupyter는 _ipython re-import_ccgcccccc의 블로그-CSDN 블로그 icon-default.png?t=N2N8https://blog.csdn.net/ccgcccccc/article/details/88069044 파일에서 Python 모듈 및 기능을 다시 가져옵니다.

추천

출처blog.csdn.net/qq_54708219/article/details/129755764