argparse在cx_Freeze app中导致错误

时间:2018-03-20 05:32:23

标签: python argparse cx-freeze

我制作了两个python程序A和B,其中两个程序都被cx_Freeze打包成不同的exe文件。

程序A是主程序,B位于"Main Program folder/dummy_dist"

A使用subprocess.run()启动B,如下所示

subprocess.run(["dummy_dist/dummy.exe", "--mode 1", "--pid " + str(os.getpid()), "--sid " + sid], cwd="dummy_dist")

当我运行时,出现以下错误

cx_Freeze argparse error msg

错误的唯一部分是我的代码是“第45行”,即

args = parser.parse_args()

仅供参考我使用argparse的代码是这个

parser = argparse.ArgumentParser(description="-")

parser.add_argument('--mode', dest="mode", metavar='Program Mode', type=str,
                    help="")
parser.add_argument('--pid', dest="pid", metavar='PID', type=str, required=False)
parser.add_argument('--sid', dest="sid", metavar='SESSION_ID', type=str,
                    help="Active SESSION_ID", required=False)

当我将它作为.py文件运行时,程序运行正常。

你能告诉我出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

所以是的......我发现了这个错误

致电

subprocess.run(["dummy_dist/dummy.exe", "--mode 1", "--pid " + str(os.getpid()), "--sid " + sid], cwd="dummy_dist")

当我将它们分开时,我将标志和值分组在一个字符串中。

所以它应该是

subprocess.run(["dummy_dist/dummy.exe", "--mode", "1", "--pid", str(os.getpid()), "--sid", sid], cwd="dummy_dist")