如何使用pyinstaller打包xlwings代码?

时间:2016-12-19 15:30:50

标签: python excel vba pyinstaller xlwings

我只想将excel保留为UI并允许用户从电子表格中调用python而不是VBA。另外python文件需要打包成一个.exe文件。

没有找到任何教程,这就是我尝试过的:

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'不被识别为内部或外部命令,可操作程序或批处理文件。

更令人烦恼的是,如果我在python中导入pandas,pyinstaller甚至会因为#34;超出最大递归深度而赢得编译器。

有人能举例说明如何让这两件事情协同工作吗?我甚至不必使用xlwings或pyinstaller,只要它可以将python代码变成一个可执行文件并从Excel运行它。

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

更新

我终于修理了它们:

  1. 卸载pyinstaller并将其替换为pyinstaller开发版本(v3.3)
  2. 在VBA中手动修改xlwings.bas代码。似乎PYTHON_FROZEN使用硬编码路径搜索可执行文件: PYTHON_FROZEN = ThisWorkbook.Path& " \构建\ exe.win32-2.7
  3. 希望xlwings团队可以用更强大的文件替换查找.exe文件的逻辑。

0 个答案:

没有答案