pyinstaller导致奇怪的问题

时间:2014-09-10 14:37:40

标签: python pyinstaller

我正在尝试使用pyinstaller来创建我编写的脚本的独立exe,这是我过去用-F标志完成的。这一次,我遇到了一个问题。

exe构建正常并且可以运行,但是当我使用除-h(帮助)之外的任何cmdline参数运行它时,程序只是重复打印“参数-f / - file is required”(它是)。然而,即使我把-f'filename'放了,通常程序应该退出此错误,但它只是挂起并重复打印错误。

有没有人见过类似的问题? .py文件完全按预期运行,但是一旦我将它构建到exe中,它就会开始表现出这种奇怪的行为。

编辑:

好的,所以我对此进行了一些研究,现在我认为这个问题甚至更奇怪......我把所有的argparse东西分成了自己的函数,如下:

def parseArgs():
''' Parse command line arguments '''
parser = argparse.ArgumentParser(description="desc")
parser.add_argument('-f', '--file', required=True, dest='input_file', help='Text file containing the list of hosts')
parser.add_argument('-p', '--processors', required=False, dest='processors', help='Specify the number of processors to use. If omitted \
                        this will default to use as many processors as are available')  
parser.add_argument('-v', '--verbose', required=False, action='store_true', help='Print additional output to the console', default=False)
parser.add_argument('-u', '--unc', required=False, dest='unc_path', help='UNC Path to copy results to. If omitted, results will need to be copied \
                        off later. Format UNC path as normal, with a trailing backslash, i.e. \\\\server\path\share\\', default='')

args = parser.parse_args()

# Check UNC path and fix issues with trailing slashes, etc.
if args.unc_path != '':
    args.unc_path = args.unc_path.replace('\\', '\\\\')

return args

这显然是在main函数中调用的。我发现这部分程序实际上运行正常。我在主函数AFTER parseArgs()中的某个点上有一些STDOUT输出,我在屏幕上看到它正常。

奇怪的是,在调用了另一个(与parseArgs()函数完全无关的函数)之后,我得到输出,好像我给出的参数有一些错误(没有,保持记住,这通常与.py文件一起使用,而不是在将其打包为exe之后。)

如果它有任何区别,我调用的函数用于将文件复制到多个远程主机(使用XCOPY),使用pool.map()在子进程之间拆分工作。

有没有人知道为什么在我的程序部分执行完毕后我会看到与argparse相关的输出?

另一个编辑:看起来这似乎与多处理有关,因为出现的argparse错误有时会重叠(因为我说同样的错误告诉我-f需要重复打印到屏幕上)。

提前致谢!

0 个答案:

没有答案