Не удается импортировать класс из модуля (проблема циклической ссылки?) - PullRequest
0 голосов
/ 16 апреля 2020

В стеке я видел множество проблем по этому поводу, но до сих пор не могу понять, почему я не могу заставить мою работать. У меня есть 2 .ipynb файла, и я хочу импортировать класс из одного файла в другой следующим образом:

CV_Screening_Interface:

from joblib import dump, load
import sys
import pandas as pd
import os
import import_ipynb
import docx
import readDocx ***(This is another ipynb file)***
from docx import Document
import string
model = load('model.joblib') 

    class CV:

        def __init__(self,university,major,masters,company,certification,GPA):
            self.university = university
            self.major = major
            self.masters = masters
            self.company = company
            self.certification = certification
            self.GPA = GPA

    #And a bunch of other functions 

Теперь в FirstProgram

from tkinter import *
from tkinter import filedialog
from docx import Document
import io
import import_ipynb
import CV_Screening_Interface


#Till here works fine

Когда я пытаюсь импортировать класс CV, я получаю ошибку импорта

from CV_Screening_Interface import CV 

OR

test = CV_Screening_Interface.CV()

ImportError: невозможно импортировать имя 'CV' из 'CV_Screening_Interface' (CV_Screening_Interface.ipynb)

Я проверил PYTHONPATH, у меня уже есть пустой init .py в каталоге. Что странно, так это то, что импорт модуля работает, а импорт класса в модуле - нет.

Примечание в CV_Screening_Interface CV-класс работает отлично, поэтому я не думаю, что есть какие-то особые проблемы с ним. Наверное, нужно внутри него name = " main "?

1 Ответ

0 голосов
/ 16 апреля 2020

Хорошо, это решило мои проблемы:

Я создал новый ipynb под названием ClassFile.ipynb, и он содержит только CV класса без импорта каких-либо пакетов

Затем я преобразовал ClassFile.ipynb в ClassFile .py и импортировал его в FirstProgram, и это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...