python - 替代 if __name__ == '__main__':
问题描述
我有一个main.py
名为的模块gui.py
,我想将其编译为 cython,然后是 exe,其中包括:
import gui
if __name__ == '__main__':
gui()
然后在gui.py
我有一个使用if __name__ == '__main__':
如下的代码:
def find_regex_1(k, s):
reg = f'{k}\s*=\s*(\S+)'
return re.search(reg, s).group(1)
def read_configs(config_file):
with open(config_file, "r") as f:
content = f.read()
license_code = find_regex_1('LICENSE CODE', content)
activation_code = find_regex_1('ACTIVATION CODE ', content)
return license_code, activation_code
if __name__ == '__main__':
license_code, activation_code = read_configs('config.txt')
if __name__ == '__main__':
中断过程中的第二个gui.py
我应该怎么做才能避免这种情况?我想我应该使用别的东西而不是if __name__ == '__main__':
但我不知道用什么来代替相同的效果
我得到的错误:
C:\Users\Administrator\Desktop\cython>python main.py
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\cython\main.py", line 24, in <module>
import gui
File "gui.py", line 530, in init gui
status, msg = activate_license(sys.argv[0])
File "gui.py", line 113, in gui.activate_license
"key": license_code,
NameError: name 'license_code' is not defined
当我运行模块gui.py
本身时,它将毫无问题地运行,但main.py
我会收到此错误
解决方案
导入模块gui.py
时可以在程序中调用它的函数main.py
,如下:
import gui
if __name__ == '__main__':
license_code, activation_code = gui.read_configs('config.txt')
完全没有问题该模块gui.py
还包含一个if __name__ == '__main__':
推荐阅读
- node.js - 温斯顿从纱线 2 中的位置记录
- ios - 如果我的 iOS 分发证书被盗用会怎样?
- linux - 查找下一个最接近的值 (bash)
- reactjs - d3-delaunay 线未显示
- c - OpenGL:应用我自己的lookAt函数时,屏幕是空白的
- arrays - 使用数组内的模式流行模式的字段(Moongose)
- python - 如何在 django 中创建静态文件
- python - 每次在新行上打印变量一定次数
- blazor - 为什么我的带有 ElementReference 和 IJSRuntime.InvokeAsync 的 blazor 组件在 for 循环中不起作用
- python - Python——同时遍历两个列表