首页 > 解决方案 > 从py创建exe在执行时默认传递参数?

问题描述

如果我们假设这是 test.py 代码:

import sys
 
for arg in sys.argv:
    print arg
print "Hello World!"

通过使用auto-py-to-exepyinstallerpy2exe等工具,我们如何制作一个在执行时默认传递特定参数的 exe?例如:通过使用一个工具,我们从 test.py 创建一个 test.exe 并通过执行 test.exe 它将使用 foobar 作为 arg, test.exe 执行的输出是:

foobar
Hello World!

我已经测试过 auto-py-to-exe 和 pyinstaller 但两者都没有这样的选项。我应该提一下,我对使用 [任何] 工具更感兴趣,而不仅仅是修改 python 源代码。因为在更大的来源中修改可能是一项艰巨的任务。

标签: pythonargumentscross-compilingpyinstallerpy2exe

解决方案


我建议使用 pythons ArgumentParser ( https://docs.python.org/2/howto/argparse.html ) 并default=为您的参数设置一个值。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("argument", default="foobar")
args = parser.parse_args()

print arg
print "Hello World!"

您还可以重组您调用的 python 脚本以使用您需要的参数实现“main”方法:

def main(argument):
    print argument
    print "Hello World!"

对于您的特定可执行文件,只需创建单独的包装脚本:

foob​​ar.py

from test import main
test("foobar")

另一个foobar.py

from test import main
test("anotherfoobar")

现在您可以使用 pyinstaller 分别创建 foobar.py 和 anotherfoobar.py 的可执行文件。


推荐阅读