NameError: глобальное имя не определяется при вызове функции из другого файла python - PullRequest
0 голосов
/ 14 июня 2019

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

«Ошибка имени: глобальное имя« main1 »не определено».

Я впервые пишу на Python и впервые пишу о переполнении стека, так что простите меня, но я не уверен, что включить в этот пост.Я также использую Tkinter в одном файле и pdf miner для двух других, и мой python version 2.7 (устаревший, я знаю).

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

from DearNeighbor import *
from NameOnPage import *
from Tkinter import *
from tkFileDialog import *
from functools import partial
import Tkinter as tk

DearNeighbor - это файл, который содержит main1, а NameOnPage - это файл, который содержит main2.

Функция, которую я пытаюсь запустить:

def submit():
    if BoolNeighbor:
        main1(txt0, pdf0)
    if BoolName:
        main2(txt1, pdf1)

передаваемые файлы txt и pdf - это две строки, которые представляют собой адреса файлов, которые нужно просмотреть.

Main1 в DearNeighbor:

def main1(textinput, pdfinput):
    start_time = time.time()
    global txt00
    global pdf00
    txt00 = textinput
    pdf00 = pdfinput
    pdf_dict = pdf_records_file()
    text_dict = records_in_text_file()
    different = set()
    count = 0
    for key in sorted(set(pdf_dict.keys()) & set(text_dict.keys())):
        pdf_value = [x.upper() for x in pdf_dict[key]]
        text_value = [x.upper() for x in text_dict[key]]
        if pdf_value == text_value:
            count += 1
            print()
            print(key, "from pdf file", pdf_dict[key], colored("MATCHED", 'green', attrs=['bold']), key, "from text file", text_dict[key])
            print()
        else:
            different.add(key)
            print(key, "from pdf file", pdf_dict[key], colored("DID NOT MATCH", 'red', attrs=['bold']), key, "from text file", text_dict[key])
            print()

    print()
    print("The number of records matched = ", colored(count, 'yellow',attrs=['bold']))
    print()
    print("Total time taken = ", colored(" %s seconds", 'yellow') % (time.time() - start_time))

Полная ошибканапечатано:

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1536, in __call__
    return self.func(*args)
  File "/Users/will.rogers/Desktop/Python Scripts/ExecutableAutomation/venv/FrontEnd.py", line 69, in submit
    main1(txt0, pdf0)
NameError: global name 'main1' is not defined

остальная часть кода в этой программе создает пользовательский интерфейс в tkinter, который представляет собой набор (работающих) кнопок, которые ведут к функции отправки, и до тех пор, пока не произойдет ошибка,Надеюсь, этой информации было достаточно, спасибо!

1 Ответ

0 голосов
/ 14 июня 2019

спасибо за все комментарии! вы, ребята, указали мне правильное направление, и я ценю это. Я импортировал FrontEnd в класс, который хотел импортировать FrontEnd, и это вызвало некоторые проблемы. Затем я получил исключение, когда ему нужен Unicode, и я дал ему «str». Я исправил это путем обновления до Python 3.7 (что я технически не должен был делать, но 2.7 вызывал у меня столько проблем, что я не мог устоять. Отдельное спасибо @MisterMiyagi в комментариях, я бы не заметил без его помощи !

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