簡體   English   中英

如何使用python3 -i加載腳本,但沒有名稱==主運行?

[英]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文件。

只需運行python3from script import *輸入類型即可。

這里有一個更完整的答案: __name__ ==“ __main__”怎么辦?

您要查找的變量實際上存在。

from sys import flags
print(flags.interactive)

在交互模式下將打印1 ,否則將打印0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM