Возможность импортировать модуль, но не может использовать функцию внутри него - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть функция с именем learn в модуле с именем lrn_proto.

Я использую его в другом скрипте, я могу импортировать его, но я не могу использовать его функцию, она работаетдо.Но сейчас он больше не работает, и я даже не изменил исходный код.

Вот источник lrn_proto:

import sys
import os
import re
import time
sys.path.append(os.path.abspath('..\\..\\..\\conf'))
sys.path.append(os.path.abspath('..\\..\\writer\\mem_writer_proto'))
from cfg_exe import exe_loc as loc

sys.path.append(os.path.abspath(loc.lib))
sys.path.append(os.path.abspath(loc.mem))
sys.path.append(os.path.abspath(loc.main))
import mem_writer as mw
import prototype_ui as ptui

def learn(src,keywords,type,identifier):
    if src == r'\exit':
        print('You have choose to exit this program, see you later.')
        sys.exit()
    elif src == r'\add':
        ptui.menu()
    temp = src.lower()
    for x in keywords:
        if x in temp:
            temp_k1 = list(temp.partition(x))
            try:
                temp_k1_t = list(str(temp_k1.index(x)))
            except ValueError:
                pass
            for b in temp_k1_t:
                temp_k = list([temp_k1.pop(int(b))])
            print('True\n')
            continue
        elif x not in temp:
            temp_k = list('')
            pass
    for x in type:
        if x in temp:
            temp_t1 = list(temp.partition(x))
            try:
                temp_t1_t = list(str(temp_t1.index(x)))
            except ValueError:
                pass
            for b in temp_t1_t:
                temp_t = list([temp_t1.pop(int(b))])
            print('True\n')
            continue
        elif x not in temp:
            temp_t = list('')
            pass
    for x in identifier:
        if x in temp:
            temp_i1 = list(temp.partition(x))
            try:
                temp_i1_t = list(str(temp_i1.index(x)))
            except ValueError:
                pass
            for b in temp_i1_t:
                temp_i = list([temp_i1.pop(int(b))])
            print('True\n')
            continue
        elif x not in temp:
            temp_i = list('')
            pass
    temp_kti = list(temp_k+temp_t+temp_i)
    act_patt = '|'.join(temp_kti)
    act = (''.join((re.split(act_patt,temp))).strip(' .'))
    print('Output:')
    print('Keywords: ',temp_k,'\nType: ',temp_t,'\nIdentifier: ',temp_i,'\nContent: ',act)
    mw.dict(title,type,keywords,identifier,actions)

Я пытался: from lrn_proto import learn

Производит: ImportError: cannot import name 'learn' from 'lrn_proto'

Затем с import lrn_proto,

Производит это при вызове функции:

AttributeError: module 'lrn_proto' has no attribute 'learn'

Странные вещи: те, которые произвели ошибка, не говорят мне, что не так с моим кодом.

Я уже добавил каталог всех модулей в sys.path

Кто-нибудь может мне сообщитьчто не так в моем коде?Я понятия не имел, что не так с моим кодом.

Я использую Python3 в Windows.

Пожалуйста, спросите меня, если вам нужна дополнительная информация по этому вопросу.

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