如何从C ++(Clion)调用python脚本

好的,所以在互联网上search一下太难以后,我仍然有同样的问题。 我有一个非常简单的python脚本,打开指定的excel文件,然后运行一个macros。

我知道一个事实,我的Python脚本运行,因为它应该孤立。 我知道我的C ++代码应该运行。

但是两者的组合创build了一个“com_error”。 所有看到这个的人都知道,这些都是我跑过的所有testing:

(1)简单的python脚本(只是打印hello) – >传递(2)使用C ++运行相同的简单.py脚本 – >通过(3)更多advanecd python脚本(打开excel,运行macros,保存并closures) – >通过(4)usc C ++代码运行高级.py脚本 – >失败。

还有我的问题。 这与win32com.client有关,服务器抛出的错误是因为它无法find文件的位置(但相信我,因为它通过了“查找文件”testing)

我正在运行Windows7,Python 2.7和最新版本的JetBrains Clion(2017.1.2)。

任何帮助将如此赞赏。 谢谢! 快乐的编码。

C ++代码:

#include <iostream> #include <Windows.h> using namespace std; int main() { const char *cmd = "python C:\\Users\\Alex.Valente\\Desktop\\python.py"; PROCESS_INFORMATION processInformation = {0}; STARTUPINFO startupInfo = {0}; startupInfo.cb = sizeof(startupInfo); BOOL result = CreateProcess(NULL, (LPSTR)cmd, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, GetEnvironmentStrings(), NULL, &startupInfo, &processInformation); if(!result){ return -1; } WaitForSingleObject( processInformation.hProcess, INFINITE ); return 0; } 

Python脚本:

 from __future__ import print_function import unittest import os.path import win32com.client import os class ExcelMacro(unittest.TestCase): def test_excel_macro(self): xlApp = win32com.client.DispatchEx('Excel.Application') xlsPath = r'C:\Users\Alex.Valente\Desktop\Data.csv' xlApp.Visible = True wb = xlApp.Workbooks.Open(Filename=xlsPath) xlApp.Run("PERSONAL.XLSB!PythonTest") wb.Save() wb.Close() xlApp.Quit() print("Macro ran successfully!") if __name__ == "__main__": unittest.main() 

和我运行后打印的错误:

 ====================================================================== ERROR: test_excel_macro (__main__.ExcelMacro) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Users\Alex.Valente\Desktop\python.py", line 25, in test_excel_macro wb = xlApp.Workbooks.Open(Filename=xlsPath) File "<COMObject <unknown>>", line 8, in Open com_error: (-2147417851, 'The server threw an exception.', None, None) ---------------------------------------------------------------------- Ran 1 test in 6.305s FAILED (errors=1)