我对某些特定行为感到困惑,找不到一些有助于我理解错误的信息。
情况如下:我制作了一个小pyqt4
应用程序,它在某些时候使用or (都尝试过)将OrderedDict
一个转储到 yaml 字符串并将其写入文件,或从该文件中读取。这可以很好地正常执行代码。现在我想通过使用.pyyaml
ruamel.yaml
pyinstaller
现在,如果我直接使用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中查看。也许我正在寻找错误的术语。我还尝试重命名模块以防止阴影。
现在我的问题是,有人知道发生了什么并且可以解释这种行为吗?