我正在尝试将Kivy应用程序编译为Windows exe,但我一直收到属性错误: AttributeError:'str'对象没有属性'items'
我已经编译了其他应用程序,并按照kivy page(完成演示)的行指示行,但是当我尝试对我的应用程序执行相同操作时,我收到上述错误。我不知道该去哪里我已经尝试了好几个小时了,我似乎无法取得任何进展。任何帮助将不胜感激。
编辑: 下面是堆栈跟踪的尾部,整个事情很长,所以我粘贴在我认为可能相关的内容中,但坦率地说,我有点超出了我的深度:)
#include<stdio.h>
#include<unistd.h>
#include<time.h>
#define temp_max 35
#define temp_min -10
#define FREQUENCY 5
int main(void)
{
srand(time(NULL));
while(1)
{
int number = rand() % (temp_max*100 - temp_min*100) + temp_min*100;
double temperature = (double) number;
temperature /= 100;
printf("Temperature=%1.2f @ ",temperature);
fflush(stdout);
system("date");
sleep(FREQUENCY);
}
return 0;
}
我的规格:
6363 WARNING: stderr: File "c:\python27\lib\site-packages\PyInstaller\depend\a
nalysis.py", line 198, in _safe_import_module
hook_module.pre_safe_import_module(hook_api)
6375 WARNING: stderr: hook_module.pre_safe_import_module(hook_api)
File "c:\python27\lib\site-packages\PyInstaller\hooks\pre_safe_import_module\
hook-six.moves.py", line 55, in pre_safe_import_module
6378 WARNING: stderr: File "c:\python27\lib\site-packages\PyInstaller\hooks\pr
e_safe_import_module\hook-six.moves.py", line 55, in pre_safe_import_module
for real_module_name, six_module_name in real_to_six_module_name.items():
6388 WARNING: stderr: for real_module_name, six_module_name in real_to_six_m
odule_name.items():
AttributeError: 'str' object has no attribute 'items'
6396 WARNING: stderr: AttributeError: 'str' object has no attribute 'items'
编辑: 显然它与Kivy无关,因为我已经改写前端使用TKinter而且我仍然有问题。
答案 0 :(得分:17)
如果您仍然遇到此问题,以下是为我解决的问题:
pip install --upgrade setuptools
我已尝试安装六个(在我的情况下,它尚未安装),但由于它似乎正在寻找_vendor.six
而不仅仅是six
,因此无法解决它。不知何故,升级setuptools解决了它。
答案 1 :(得分:5)
尝试使用pyinstaller将脚本编译为男子汉字时出现了类似的错误。我尝试卸载/重新安装六个和setuptools按照别处的建议无效。我注意到有关枚举的另一个错误,并尝试通过pip卸载enum34。这样做了。
pip uninstall enum34
答案 2 :(得分:3)
要检查的内容:
-检查输出是否超出规定的错误。有时可能未安装所需的某些模块。确保所有模块均已安装且没有先前的错误。
-使用命令升级设置工具:
pip install --upgrade setuptools
-取消安装并重新安装六个模块,setuptools,pyinstaller等模块在某些情况下也会有所帮助。
答案 3 :(得分:1)
当我使用pyinstaller时,我遇到了一些类似的错误。我的错误消息的一部分显示如下:
File "C:\Python27\lib\site-packages\pyinstaller-3.1.1-py2.7.egg\PyInstaller\depend\analysis.py", line 198, in _safe_import_module
hook_module.pre_safe_import_module(hook_api)
File "C:\Python27\lib\site-packages\pyinstaller-3.1.1-py2.7.egg\PyInstaller\hooks\pre_safe_import_module\hook-six.moves.py", line 55, in pre_safe_import_module
for real_module_name, six_module_name in real_to_six_module_name.items():
AttributeError: 'str' object has no attribute 'items'
当我向上滚动此消息时,我发现了这个:
18611 INFO: Processing pre-find module path hook distutils
20032 INFO: Processing pre-safe import module hook _xmlplus
23532 INFO: Processing pre-safe import module hook six.moves
Traceback (most recent call last):
File "<string>", line 2, in <module>
ImportError: No module named six
所以我转而安装模块六。当我安装它时,我的pyinstaller可以成功运行。
希望这可以帮到你。
答案 4 :(得分:1)
尽管升级setuptools
,但卸载并重新安装对我来说仍然有效。
conda uninstall setuptools
然后
conda install setuptools
答案 5 :(得分:0)
我有一个来自Pyinstaller的wxPython项目的类似错误输出。通过升级setuptools(从38.5.1到39.0.2)解决了这个问题。
答案 6 :(得分:0)
答案 7 :(得分:0)
pip install --force-reinstall --no-binary :all: pyinstaller
帮了我大忙,但仅在以管理员身份运行到命令提示符时....(Win10)