1

我对某些特定行为感到困惑,找不到一些有助于我理解错误的信息。

情况如下:我制作了一个小pyqt4应用程序,它在某些时候使用or (都尝试过)将OrderedDict一个转储到 yaml 字符串并将其写入文件,或从该文件中读取。这可以很好地正常执行代码。现在我想通过使用.pyyamlruamel.yamlpyinstaller

现在,如果我直接使用yaml.dump()ruamel.yaml.dump()在我的pyqt4表单类的方法中生成 yaml 字符串并写入文件(使用的标准方式with open ...),我可以使用捆绑应用程序pyinstaller并且 exe 运行良好。

yaml.dump(dict)但是,如果我在子文件夹/模块中编写一个小函数,该函数使用对 pyyaml ( ) 或 ruamel.yaml ( )的完全相同的调用来ruamel.yaml.dump(dict, Dumper=ruamel.yaml.RoundTripDumper)生成 yaml 字符串并保存到文件中with open ...,并在我的pyqt4方法中使用它(我只是想让事情更具可读性),pyinstaller开始加载一堆模块并做更多的事情(根据控制台输出),导致 exe 文件大了近 5 倍,加上无法使用pyi_rth_pkgres returned -1在启动时引发致命错误。

不幸的是,我对控制台输出或警告日志了解不多,可在此 gist中查看。也许我正在寻找错误的术语。我还尝试重命名模块以防止阴影。

现在我的问题是,有人知道发生了什么并且可以解释这种行为吗?

4

1 回答 1

0

经过大量的试验和错误,我终于让它工作了。

我创建了一个新模块并在其中构建了转储功能。pyinstaller并且捆绑的 exe 工作完美无缺。但是,如果我在上一个模块中做完全相同的事情,即使重构名称,它也不起作用。我什至将完整的代码复制到旧模块中,但它不起作用。我不知道为什么,在这一点上我不敢问:|

我很高兴它现在有效。

于 2016-03-12T16:20:35.913 回答