问题描述
我有一个简单的.ipynb,它从一个Excel文件中读取一个值,然后将其打印到另一个Excel文件中的单元格中。我使用'jupyter nbconvert-编写MyFile.ipynb脚本来生成.py文件。这有效,没有错误。 .py文件已创建。
在终端中:
C:\Users\me\Anaconda3\Scripts>jupyter nbconvert --to script MyFile.ipynb
输出:
[NbConvertApp] Converting notebook MyFile.ipynb to script
[NbConvertApp] Writing 1034 bytes to MyFile.py
然后我去
C:\Users\me\Anaconda3\Scripts>pyinstaller --onefile MyFile.py
然后我得到:
raise ImportError('Unable to load module attribute') from e
ImportError: Unable to load module attribute
这是我现在的出发点,我可以弄清楚。我找到有关添加路径等的信息,但我真的不知道该怎么办?
历史是这样的,我首先遇到了“最大递归深度超出错误”。我试图通过更改spec文件来解决此问题:
import sys
sys.setrecursionlimit(5000)
然后我再次运行-C:\ Users \ me \ Anaconda3 \ Scripts> pyinstaller --onefile MyFile.py',但是没有运气。规格文件已被覆盖。
然后我运行了'pyinstaller MyFile.spec',这没有用。
然后我发现某个地方可能是openpyxl的版本,然后卸载了当前版本,并安装了openpyxl 2.3.5。然后,我删除了我的.py文件,并开始进行安全检查。完成此操作后,出现上述“导入错误:无法加载模块属性”错误。
看来我一直在朝着最终获得exe文件的方向迈进,但这肯定不像某些论坛所希望的那样容易。
我在做什么错?如何改善我的整体代码/设置以实现功能exe文件的目标?我使用的是Windows,exe文件的用户将基于Windows。
谢谢!
解决方法
我遇到了类似的问题,对我来说,我的matplotlib版本是由我引起的。 matplotlib版本3.3.x当前似乎存在一个已知错误。降级到3.1.2解决了我的问题。另外,如果您使用的是Anaconda Navigator,我建议您创建一个专用的Python环境,专门用于打包脚本。