因此,我正在尝试打包我为工作编写的程序,该程序允许人们同时在多个电子表格(@Smartsheets)上添加,更新,删除相同的行/列。我正在使用Kivy和Smartsheet-Python-SDK
当我按照Kivy的指示使用PyInstaller打包应用程序时,出现错误: “模块'enum34'没有属性'IntFlag'” 和 “'str'对象没有属性'items'”
现在,当我搜索此错误时,我看到的唯一建议是卸载enum34并安装常规的enum模块。
更大的问题是Smartsheet API需要enum34,而PyInstaller需要常规的enum。
有关如何解决此问题的任何建议?可以同时安装两个蛋糕吗?似乎enum34与enum安装在同一文件夹中(我可能错了,但我想我读了不止一次)。
我已经查看了整个网站上的建议,但是我需要以某种方式同时满足每一项要求。
我已经尝试仅卸载enum34并安装常规的enum,但是您可以猜测它破坏了我的smartsheet模块。
这是错误,不确定我的代码是否必要(加上我努力工作,不希望它被盗)。
53 INFO: PyInstaller: 3.4
53 INFO: Python: 3.7.2
54 INFO: Platform: Windows-10-10.0.17763-SP0
55 INFO: wrote C:\Users\mpalu\Desktop\Smartsheet Mass Editor\SSMassEditor.spec
57 INFO: UPX is not available.
58 INFO: Extending PYTHONPATH with paths
['C:\\Users\\mpalu\\Desktop\\Smartsheet Mass Editor',
'C:\\Users\\mpalu\\Desktop\\Smartsheet Mass Editor']
58 INFO: checking Analysis
58 INFO: Building Analysis because Analysis-00.toc is non existent
59 INFO: Initializing module dependency graph...
61 INFO: Initializing module graph hooks...
63 INFO: Analyzing base_library.zip ...
Traceback (most recent call last):
File "<string>", line 41, in <module>
File "<string>", line 13, in walk_packages
File "C:\Users\mpalu\AppData\Local\Programs\Python\Python37-32\lib\pkgutil.py", line 130, in iter_modules
for name, ispkg in iter_importer_modules(i, prefix):
File "C:\Users\mpalu\AppData\Local\Programs\Python\Python37-32\lib\pkgutil.py", line 149, in _iter_file_finder_modules
import inspect
File "C:\Users\mpalu\AppData\Local\Programs\Python\Python37-32\lib\inspect.py", line 40, in <module>
import linecache
File "C:\Users\mpalu\AppData\Local\Programs\Python\Python37-32\lib\linecache.py", line 11, in <module>
import tokenize
File "C:\Users\mpalu\AppData\Local\Programs\Python\Python37-32\lib\tokenize.py", line 33, in <module>
import re
File "C:\Users\mpalu\AppData\Local\Programs\Python\Python37-32\lib\re.py", line 143, in <module>
class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'....
....
3090 INFO: Caching module hooks...
3096 INFO: Analyzing C:\Users\mpalu\Desktop\Smartsheet Mass Editor\SS_Mass_Editor.py
3676 INFO: Processing pre-safe import module hook urllib3.packages.six.moves
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "C:\Users\mpalu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\__init__.py", line 8, in <module>
from .connectionpool import (
File "C:\Users\mpalu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 3, in <module>
import logging ....
AttributeError: 'str' object has no attribute 'items' </code>
如上所述,我只想打包此程序,以便办公室中的人们可以使用它,而不必安装python和所有程序包(这里没有人可以使用计算机)并使用批处理文件来运行该程序。
答案 0 :(得分:3)
enum34
是python3.4中引入的enum
类型的反向移植库,请参见PEP435,也许还有this SO post。但是由于您正在运行python3.7,因此这种依赖关系是不正确的。
显然,smartsheet
开发人员已经知道此问题并提供了修复程序。请参见this issue description和the fixing commit。升级smartsheet
可能会解决您的问题。
pip install smartsheet-python-sdk --upgrade
如果尚未通过pip
获得最新版本,则可以从源代码安装它:
# Clone the repository
git clone https://github.com/smartsheet-platform/smartsheet-python-sdk.git
# As of now (Jan 2019), the fix has not been merged to master yet.
# Hence, directly clone the patch branch:
# git clone -b tw-updates-2.0 https://github.com/smartsheet-platform/smartsheet-python-sdk.git
cd smartsheet-python-sdk
# Install the module.
python setup.py install