2016-10-16 56 views
1

我正在嘗試從Python腳本調用CMake命令。這是我的代碼:無法從Python腳本調用CMake

cmakeCmd = ["C:\Program Files\CMake\bin\cmake.exe",'-G Visual Studio 11 Win64', 'C:\Users\MyUser\Desktop\new\myProject'] 
retCode = subprocess.check_call(cmakeCmd, shell=True) 

但在運行腳本時,我得到了以下的輸出:

The filename, directory name, or volume label syntax is incorrect. 
Traceback (most recent call last): 
    File "C:\Users\ochitaya\Desktop\New\myProj\sc.py", line 10, in <module> 
    retCode = subprocess.check_call(cmakeCmd, stderr=subprocess.STDOUT, shell=True) 
    File "C:\Python27\lib\subprocess.py", line 541, in check_call 
    raise CalledProcessError(retcode, cmd) 
subprocess.CalledProcessError: Command '['C:\\Program Files\\CMake\x08in\\cmake.exe', '-G Visual Studio 11 Win64', 'C:\\Users\\ochitaya\\Desktop\new\\myProj']' returned non-zero exit status 1 

回答

1

在Python字符串中的反斜槓(\)是轉義字符。這就是爲什麼字符串"C:\Program Files\CMake\bin\cmake.exe"被翻譯爲C:\\Program Files\\CMake\x08in\\cmake.exe(請注意\b等於\x08)。爲了解決這個問題,告訴Python中,你要原樣,或者換句話說,作爲原料字符串的前綴來r字符串來讀取字符串:

cmakeCmd = [r"C:\Program Files\CMake\bin\cmake.exe",'-G Visual Studio 11 Win64', r'C:\Users\MyUser\Desktop\new\myProject'] 

欲瞭解更多關於這個主題,採取看一下string literals的官方文檔。

+0

非常感謝您的快速回復。 –

+0

你知道嗎我應該怎麼做呢如果它現在說: –

+0

mspdb110.dll不見了 –