如何解决导入和重新加载的问题

时间:2019-07-09 00:48:39

标签: python tkinter python-importlib

我有一个带有Tkinter GUI的基本工具,它可以循环进行线路测试,然后允许通过单独的测试模块对新服务进行测试。我在重新测试时遇到了一个问题,它只能提供与先前相同的数据,因此添加了importlib.reload(test)即可解决该问题,但是现在代码运行了两次。

我尝试添加这样的计数器

if n = 0:
   import(test)
   n=n+1
else: 
    reload(test)

但是在第二个循环中我得到了错误

  

UnboundLocalError:分配前已引用局部变量“ test”

n = 1
import test as n
n=n+1

但是n不再是变量。

我需要测试运行一次,然后使用新数据重新加载第二个测试

1 个答案:

答案 0 :(得分:0)

第一个文件是 mytestmain.py 。它在单独的模块 mytest.py 中调用 test 函数。

# Load file mytest.py from the working directory.
# The calling file is "mytestmain.py", also in the working directory.

import mytest
print(mytest)
# output example: <module 'mytest' from 'c:\\python\\so\\mytest.py'>

data1 = 2
answer1 = 4 

data2 = 3
answer2 = 10 

# Call function "test" inside "mytest.py" module.
# Function "test" calculates a square of a number.

# Test1 with data1=2. Test answer1 is 4.
# This is the correct answer, test should pass.
result = mytest.test(data1, answer1)
print("Result1: ", result)

# Test2 with data2=3.  Test answer2 is 10.
# This is the wrong answer, test should fail.
result = mytest.test(data2, answer2)
print("Result2: ", result)

第二个文件是 mytest.py ,该文件具有 test 功能。该文件仅加载一次。

# testing module, named mytest.py

def test(data, answer):
    if data:
        # If data exists, compare with answer.
        if answer == data * data:
            return "Pass"
        else:
            return "Fail"  

# Call test function.
# result = test(2, 4)
# print(result)            

# result = test(3, 10)
# print(result)  

仅当您更改 mytest.py 文件中的参数时才需要重新加载。对于测试,通常的工作流程是将新参数传递到测试文件中,而不是尝试从测试文件内部更改这些参数。我看到重新加载在Jupyter笔记本电脑中经常使用,人们在一个大型项目中尝试将各种参数分成多个笔记本电脑。单独的笔记本电脑没有其他功能。它们被拆分以使每个文件更短,但是所有文件都是一个单元。