无法将 pyexcel-xls 与 pyinstaller 一起使用。 python 可执行文件不工作。 python 版本 3.4.4
Unable to use pyexcel-xls with pyinstaller . python executable not working . python version 3.4.4
该程序在 运行 使用时运行:
Python filename.py
但是当我使用“pyinstaller”创建它的可执行文件时
pyinstaller -F filename.py
可执行文件已成功创建,但脚本执行失败并抛出以下错误。
Traceback (most recent call last):
File "site-packages\pyexcel_io\manager.py", line 160, in create_reader
File "site-packages\pyexcel_io\manager.py", line 222, in _get_a_handler
pyexcel_io.manager.NoSupportingPluginFound: No suitable library found for xls
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "script.py", line 8, in <module>
File "site-packages\pyexcel_xls\__init__.py", line 29, in get_data
File "site-packages\pyexcel_io\io.py", line 36, in get_data
File "site-packages\pyexcel_io\io.py", line 126, in load_data
File "site-packages\pyexcel_io\manager.py", line 171, in create_reader
pyexcel_io.manager.SupportingPluginAvailableButNotInstalled: Please install pyexcel-xls
Failed to execute script script
相应的 python 脚本是:
from pyexcel_xls import save_data , get_data
data = get_data("registered-market-makers-by-security.xls")
save_data("file_to_consume.xls", data)
如何避免此错误并创建功能正常的 .exe 文件?
我的客户端有 windows 环境。
我也尝试过 py2exe,但它与我机器中的 windows dll 有一些冲突。
问题
pyexcel-io
使用一种方法来包含 pyinstaller 不支持的插件。看到这个 issue.
解决方法
解决此问题的方法有几个方面。
需要更改 pyexcel
我已经提交了一份 Change Request,它展示了如何修改 pyexcel 以允许它与 pyinstaller 一起工作。基本上 pyexcel-io 需要知道如何找到冻结的模块。
如果 pyexcel 人员接受了变更请求,那么您就可以继续了。但如果他们不这样做,或者你很着急,那么将 the changed file 从更改请求复制到你的站点包目录中作为 pyexcel_io/__init__.py
将使 pyexcel 工作。
但是,pyinstaller 还需要知道要包含什么。
pyinstaller 还需要知道包含所需的模块。所以在 pyinstaller 命令行上你还需要做:
--hidden-import pyexcel_xls.xls
更新:
pyexcel 的 merged into master branch 已提出此修复的更改请求。
更新#2:
我使用 py2exe 代替 pyinstaller 时遇到了同样的问题。
在对我的代码进行了一些研究并进行了一些谷歌搜索之后,我最终进入了这个线程并发现问题是相似的,解决方案也是如此。
如果这对其他人有任何帮助,为了使用 pyexcel
库生成 py2exe
的可执行文件,我在包含 [=15] 中添加了 'pyexcel_xls.xls'
和 'pyexcel_xlsx.xlsx'
=] 在 py2exe 安装选项中。所以:
setup(
name='Hello'
version='0.1'
description='Hello program'
author='Me'
options={
'compressed': 1
'optimized': 1
'includes': ['pyexcel_xls.xls', 'pyexcel_xlsx.xlsx' ...]
}
console=['hello.py']
)
对我来说,这个二重奏是:
(1) --hidden-import pyexcel_xlsx.xlsxr(我只是想在 pyinstaller 命令中读取 xls)
和(重要!):
(2) 在主文件中添加“import pyexcel_xlsx.xlsxr”
和 'ods' 类似;对于 csv: '--hidden-import pyexcel_io.readers.csv_in_file' / 'import pyexcel_io'
该程序在 运行 使用时运行:
Python filename.py
但是当我使用“pyinstaller”创建它的可执行文件时
pyinstaller -F filename.py
可执行文件已成功创建,但脚本执行失败并抛出以下错误。
Traceback (most recent call last):
File "site-packages\pyexcel_io\manager.py", line 160, in create_reader
File "site-packages\pyexcel_io\manager.py", line 222, in _get_a_handler
pyexcel_io.manager.NoSupportingPluginFound: No suitable library found for xls
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "script.py", line 8, in <module>
File "site-packages\pyexcel_xls\__init__.py", line 29, in get_data
File "site-packages\pyexcel_io\io.py", line 36, in get_data
File "site-packages\pyexcel_io\io.py", line 126, in load_data
File "site-packages\pyexcel_io\manager.py", line 171, in create_reader
pyexcel_io.manager.SupportingPluginAvailableButNotInstalled: Please install pyexcel-xls
Failed to execute script script
相应的 python 脚本是:
from pyexcel_xls import save_data , get_data
data = get_data("registered-market-makers-by-security.xls")
save_data("file_to_consume.xls", data)
如何避免此错误并创建功能正常的 .exe 文件?
我的客户端有 windows 环境。
我也尝试过 py2exe,但它与我机器中的 windows dll 有一些冲突。
问题
pyexcel-io
使用一种方法来包含 pyinstaller 不支持的插件。看到这个 issue.
解决方法
解决此问题的方法有几个方面。
需要更改 pyexcel
我已经提交了一份 Change Request,它展示了如何修改 pyexcel 以允许它与 pyinstaller 一起工作。基本上 pyexcel-io 需要知道如何找到冻结的模块。
如果 pyexcel 人员接受了变更请求,那么您就可以继续了。但如果他们不这样做,或者你很着急,那么将 the changed file 从更改请求复制到你的站点包目录中作为 pyexcel_io/__init__.py
将使 pyexcel 工作。
但是,pyinstaller 还需要知道要包含什么。
pyinstaller 还需要知道包含所需的模块。所以在 pyinstaller 命令行上你还需要做:
--hidden-import pyexcel_xls.xls
更新:
pyexcel 的 merged into master branch 已提出此修复的更改请求。
更新#2:
我使用 py2exe 代替 pyinstaller 时遇到了同样的问题。
在对我的代码进行了一些研究并进行了一些谷歌搜索之后,我最终进入了这个线程并发现问题是相似的,解决方案也是如此。
如果这对其他人有任何帮助,为了使用 pyexcel
库生成 py2exe
的可执行文件,我在包含 [=15] 中添加了 'pyexcel_xls.xls'
和 'pyexcel_xlsx.xlsx'
=] 在 py2exe 安装选项中。所以:
setup(
name='Hello'
version='0.1'
description='Hello program'
author='Me'
options={
'compressed': 1
'optimized': 1
'includes': ['pyexcel_xls.xls', 'pyexcel_xlsx.xlsx' ...]
}
console=['hello.py']
)
对我来说,这个二重奏是:
(1) --hidden-import pyexcel_xlsx.xlsxr(我只是想在 pyinstaller 命令中读取 xls)
和(重要!):
(2) 在主文件中添加“import pyexcel_xlsx.xlsxr”
和 'ods' 类似;对于 csv: '--hidden-import pyexcel_io.readers.csv_in_file' / 'import pyexcel_io'