如何使用pyinstaller打包xlwings代码?
我只想保持excel作为一个用户界面,并允许用户从电子表格中调用python而不是VBA。 另外,python文件需要打包成一个.exe文件。
没有find任何教程,这是我的尝试:
test.py:
from xlwings import Book import xlwings as xw def test(): sh = xw.Book.caller().sheets['a'] sh.range('A1').value = 'hello' if __name__ == '__main__': test()
然后我使用pyinstaller:
pyinstaller test.py -F
我将电子表格test.xlsm复制到与test.exe相同的目录中
test.xlsm的vba代码:
Sub callpython() RunFrozenPython ("test.exe") End Sub
最终我得到了:—————————
错误
“test.exe”不被识别为内部或外部命令,可操作程序或batch file。
更令人讨厌的是,如果我在Python中导入pandas,由于“最大recursion深度超出”,pyinstaller甚至不会编译。
任何人都可以提供一个如何使这两件事情一起工作的例子吗? 我甚至不需要使用xlwings或pyinstaller,只要它能够将python代码合并到一个可执行文件并从Excel中运行即可。
=======================
更新:
我最终通
- 卸载pyinstaller并将其replace为pyinstaller开发版本(v3.3)
- 在VBA中手动修改xlwings.bas代码。 看来,PYTHON_FROZEN用硬编码pathsearch可执行文件:PYTHON_FROZEN = ThisWorkbook.Path&“\ build \ exe.win32-2.7
希望xlwings团队可以用更强大的替代find.exe文件的逻辑。