繁体   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