python - NameError:从另一个python文件调用函数时未定义全局名称
问题描述
我正在尝试调用另一个 python 文件中存在的函数,并将当前运行的 python 文件中的用户输入传递给它。我不断收到错误:
“NameError:未定义全局名称'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:
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 中构建一个用户界面,该界面基本上是一堆(工作)按钮,它们导致提交功能,并且在此之前不会发生错误。我希望这是足够的信息,谢谢!
解决方案
感谢您的所有评论!你们为我指明了正确的方向,我很感激。我在我希望 FrontEnd 导入的类中导入 FrontEnd,这导致了一些问题。然后我得到了一个需要Unicode的异常,我给了它'str'。我通过升级到 Python 3.7 解决了这个问题(从技术上讲,我不应该这样做,但 2.7 给了我很多我无法抗拒的问题。特别感谢评论中的@MisterMiyagi,如果没有他的帮助,我不会注意到!
推荐阅读
- ssh - python paramiko 模块中的交互式会话在我的笔记本电脑上不起作用?
- r - 根据 quanteda 字典查找生成 dummy
- spring-boot - 在 Cucumber 测试运行之前启动 Spring Boot 应用程序一次
- sapui5 - ui5 - 一个日历的两个聚合
- python - Python中的递归等待keyPress
- python-3.x - 即使在等待关闭后,aiohttp 仍表示未公开的客户端会话
- spring - 从 Spring 4 升级到 Spring 5 并遇到 @Autowired 强制问题。请问有什么解决方法吗?
- db2 - 如何使用 sql developer tool 执行并查看以下 DB2 存储过程的结果集
- swift - substring(with:)' 已弃用:请使用字符串切片下标
- amazon-cognito - AWS Cognito 中基于 OTP 和 truecaller 的自定义身份验证流程