如何使用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中运行即可。

=======================

更新:

我最终通

  1. 卸载pyinstaller并将其replace为pyinstaller开发版本(v3.3)
  2. 在VBA中手动修改xlwings.bas代码。 看来,PYTHON_FROZEN用​​硬编码pathsearch可执行文件:PYTHON_FROZEN = ThisWorkbook.Path&“\ build \ exe.win32-2.7

希望xlwings团队可以用更强大的替代find.exe文件的逻辑。