我正在处理一个大型python项目,在这个项目中,脚本最终由PyInstaller打包。上周我打包和运行我的应用程序没有问题。本周我在打包我的脚本时没有任何错误。然而,当我现在运行我的可执行文件时,我似乎得到了一个相当普遍的错误,但来自一个奇怪的来源:
Traceback (most recent call last):
File "<string>", line 120, in <module>
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyi_importers.py", line 271, in load_module
exec(bytecode, module.__dict__)
File "/tmp/build/tmpDJZeLr/out00-PYZ.pyz/encodings", line 157, in <module>
AttributeError: 'module' object has no attribute 'register'
我在代码中寻找罪魁祸首,但是在我的项目中没有一个名为“register”的属性/函数/etc。我试图在我自己的代码中添加一些调试语句,但是在这个错误出现之前,我的脚本中没有一个函数被调用。在
然后我决定在pyi中添加一些print语句_进口商.py70号线附近:
^{pr2}$结果是:
<module 'encodings.aliases' from '/tmp/_MEIbDiUZq/encodings/aliases.pyc'>
{'__name__': 'encodings.aliases', '__file__': '/tmp/_MEIbDiUZq/encodings/aliases.pyc', '__loader__': <pyi_importers.FrozenImporter object at 0x7f1666fa0d10>, '__doc__': None, '__package__': 'encodings'}
<code object <module> at 0x7f1666fb4f30, file "/tmp/build/tmpg_2pIX/out00-PYZ.pyz/encodings.aliases", line 17>
Traceback (most recent call last):...
我环顾四周,发现编码.别名与内置的python库有关。我使用的是python2.7.6和pyinstaller2.1;根据它们的文档,它们应该是兼容的。我在一个基于云的IDE(c9)中工作,但这似乎不是问题所在,因为这是一个python问题,而不是OS问题。在
我被难住了。有什么帮助吗?在
问题是包名冲突。在我的项目中有一个名为“codecs”的包。当PyInstaller处理python标准库钩子时,我项目的名称空间超过了python标准库的名称空间编码.别名模块导入我的项目的“编解码器”模块而不是编码模块。在
相关问题 更多 >
编程相关推荐