与导入一起使用时执行文件 运行 文件两次

Execfile running the file twice when used with import

我想在我的 GUI 中有一个文本框和一个按钮,在单击按钮时,它应该获取文本并将其存储在某个其他文件的变量中,运行 另一个文件。

我希望用户输入访问令牌,GUI 应将其保存在 utilities.py 的全局变量 access_token 中 但是当仅导入用于设置访问令牌的功能时,文件 运行s 在单击按钮之前我不想要。 因此,实际上文件是 运行ning 两次。

这是我的gui.py

from Tkinter import *
import Tkinter as tk
from utilities import setAccessToken

root = tk.Tk()

def callback():
    setAccessToken(E1.get())
    execfile('utilities.py')

E1 = Entry(root,bd = 5, width = 10)
E1.pack()
#similarly other GUI stuff with command = callback()

mainloop()

这是我的utilities.py

access_token = ""
def setAccessToken(token):
    global access_token
    access_token = token

print 'Running Utilities : access_token =', access_token

我的预期输出是:

Running Utilities: access_token = my access token

但是我得到了两次输出,即:

Running Utilities: access_token =
Running Utilities: access_token = my access token

有什么方法可以在导入文件时从 运行ning 中停止文件 utilities.py?

当您导入一个python文件时,其中的所有代码都会被执行。这就是 python 的工作原理。为了防止执行不需要的代码,我们应该始终像这样使用 __name__

access_token = ""
def setAccessToken(token):
    global access_token
    access_token = token

if __name__ == '__main__':
    print 'Running Utilities : access_token =', access_token