Pyinstaller编译为exe

时间:2016-02-24 21:17:00

标签: python windows pyinstaller

我正在尝试将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而且我仍然有问题。

8 个答案:

答案 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)

我已经通过安装一些依赖项解决了这个问题,

pip install --force-reinstall --no-binary :all: pyinstaller

这是来源问题link

答案 7 :(得分:0)

pip install --force-reinstall --no-binary :all: pyinstaller

帮了我大忙,但仅在以管理员身份运行到命令提示符时....(Win10)