我已經(jīng)使用 Python2.7 創(chuàng)建了一個(gè)腳本,并使用 pyinstaller 將其編譯為同名的 exe,在這種情況下,“GeneralStats.py”使用 --onefile 和 -w 參數(shù)變?yōu)椤癎eneralStats.exe”。當(dāng)用 C# 調(diào)用時(shí),我使用:var pythonDirectory = (Directory.GetCurrentDirectory());var filePathExe1 = Path.Combine(pythonDirectory + "\\Python\\GeneralStats.exe");Process.Start(filePathExe1);在 C# 外部調(diào)用時(shí),因此在我的本地文件中我可以運(yùn)行 .exe,結(jié)果是一個(gè)文本文件,其中包含許多值(正確運(yùn)行)。但是,當(dāng)以這種格式使用 C# 運(yùn)行時(shí),出現(xiàn)“GeneralStats 返回 -1!”的錯(cuò)誤消息。我以前遇到過問題,但這是一個(gè)簡(jiǎn)單的 python 錯(cuò)誤,當(dāng)我返回到我的代碼并運(yùn)行它時(shí),我會(huì)收到一個(gè)我忽略的錯(cuò)誤。這次我的 python 代碼沒有返回錯(cuò)誤并且在 C# 之外工作。為什么會(huì)這樣的任何想法?我可以提供任何必要的代碼或文件目錄,請(qǐng)?jiān)儐柲欠裾J(rèn)為它有助于調(diào)試。編輯:通過刪除解決:var filePathExe1 = Path.Combine(pythonDirectory + "\\Python\\GeneralStats.exe");Process.Start(filePathExe1);并替換為:ProcessStartInfo _processStartInfo = new ProcessStartInfo();_processStartInfo.WorkingDirectory = Path.Combine(pythonDirectory + "\\Python");_processStartInfo.FileName = @"GeneralStats.exe";_processStartInfo.CreateNoWindow = true;Process myProcess = Process.Start(_processStartInfo);
1 回答

互換的青春
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
您需要為其設(shè)置工作目錄Process
- 它可能正在嘗試從其工作目錄加載文件但沒有找到它們。
見,例如這個(gè):
ProcessStartInfo.WorkingDirectory
在啟動(dòng)進(jìn)程之前使用該屬性進(jìn)行設(shè)置。如果未設(shè)置該屬性,則默認(rèn)工作目錄為%SYSTEMROOT%\system32
.
將其設(shè)置為路徑 where GeneralStats.exe
。