所以我有一个冻结的 python 脚本,我正在调用 main.exe。
我正在使用 xlwings 从 VBA 启动它,所以当我打电话时;
Sub CallMain()
RunFrozenPython ThisWorkbook.Path & "\dist\main\main.exe"
End Sub
我可以在任务管理器中看到它打开了 main.exe 并且它似乎正在运行;我可以在任务管理器中看到命令行,并且 Excel 似乎正在加载。但是,问题是 CL 需要提示用户。main.exe 运行时应该执行的第一行代码是:
user = getpass.getuser()
pwd = getpass.getpass("Please enter your password: ")
itemsearch = int(input("How many results do you want?: ")
当我作为独立运行 main.exe 时,命令行会提示用户输入,然后将进度打印到 CL,然后再将结果返回到 excel。
程序很长,但我会告诉你 main.py 文件没有 main(): 函数,它是几个函数和一个从定义在 main.py 中运行的所有类和方法的 class_helpers.py 文件的导入.
但实际上该程序的工作原理如下:
'get passwords / user / number of searches',
'import values from column A of sheet',
'iterate over the list of values from column A and create value-objects',
'run a search-method on each object',
'return the results and print them back to excel'
Python 代码本身运行良好。我的问题是从 VBA 调用它,因为当我尝试运行它时没有出现命令行。所以看起来程序从不提示输入密码和结果,只是挂在第一行,直到我结束它。
任何想法我对 xlwings 或 VBA 调用做错了什么?xlwings 文档没有提供有关 CL 提示或获取用户输入的详细信息,但我仍在阅读。
谢谢大家!