[英]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.