[英]How to load a script with python3 -i, but not have name == main run?
我有一个要与python shell一起使用的脚本(交互模式,实时解释器, python3 [return]
),我想添加到实时解释器中的脚本( python3 -i script.py
)具有if __name__ == '__main__':
在其中。 当我加载脚本时, if __name__
运行。 我在if __name__
有argsprase,它吐出一个错误。 因此,我需要能够将脚本添加到实时解释器中,但是脚本中没有某些代码可以运行, if __name__
, if __name__
。
script.py
#/usr/bin/python3
class myExcellentClass:
def __init__(var1, var2):
self.var1 = var1
self.var2 = var2
def WhatisVar1(self):
return self.var1
def WhatisVar2(self):
return self.var2
if __name__ == '__main__':
import argparse
# setup args parse
# do some stuff here
我在想if __name__
必须添加一个变量,它将测试脚本是否正在使用-i
运行。 例如:
if __name__ == '__main__' && is_interactive == false:
import argparse
# setup args parse
# do some stuff here
如果有一种方法可以从python3脚本中调用实时解释器,则只需在脚本中添加-i
,然后将启动类添加到实时解释器中即可。
我可以将班级分成另一个文件。 如果可能的话,我不想这样做。
例:
scriptA.py
#/usr/bin/python3
class myExcellentClass:
def __init__(var1, var2):
self.var1 = var1
self.var2 = var2
def WhatisVar1(self):
return self.var1
def WhatisVar2(self):
return self.var2
scriptB.py
#/usr/bin/python3
from scriptA import *
if __name__ == '__main__' && is_interactive == false:
import argparse
# setup args parse
# do some stuff here
为了提高效率,我通常将脚本系统安装为字节码文件。 (是的,我知道这是不推荐的,而且pyc也不能与不同版本的python一起使用。)由于我只需要使用-i
进行测试和排除故障,因此我将准备一个解决方案,使我可以将所有内容保存在一个python文件。
只需运行python3
并from script import *
输入类型即可。
这里有一个更完整的答案: __name__ ==“ __main__”怎么办?
您要查找的变量实际上存在。
from sys import flags
print(flags.interactive)
在交互模式下将打印1
,否则将打印0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.