pyinstaller.exe在本地工作,但在被C#调用时失败?

pyinstaller.exe在本地工作,但在被C#调用时失败?,c#,python,executable,pyinstaller,C#,Python,Executable,Pyinstaller,我使用Python2.7创建了一个脚本,并使用pyinstaller将其编译为同名的exe,在本例中,使用--onefile和-w参数将“GeneralStats.py”转换为“GeneralStats.exe” 使用C#调用时,我使用: 当在C#之外调用时,我可以在本地文件中运行.exe,结果是一个包含大量值的文本文件(正确运行) 然而,当以这种格式使用C#运行时,我得到一个错误“GeneralStats返回-1!” 这是我以前遇到过的问题,但这是一个简单的python错误,当我返回代码并运行

我使用Python2.7创建了一个脚本,并使用pyinstaller将其编译为同名的exe,在本例中,使用--onefile和-w参数将“GeneralStats.py”转换为“GeneralStats.exe”

使用C#调用时,我使用:

当在C#之外调用时,我可以在本地文件中运行.exe,结果是一个包含大量值的文本文件(正确运行)

然而,当以这种格式使用C#运行时,我得到一个错误“GeneralStats返回-1!”

这是我以前遇到过的问题,但这是一个简单的python错误,当我返回代码并运行它时,我会收到一个我忽略的错误。 这一次,我的python代码不返回任何错误,并且在C#之外工作

你知道为什么会这样吗?我可以提供任何必要的代码或文件目录,请直接询问是否有助于调试

编辑:

解决方法是删除:

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);

您需要为
进程设置工作目录
-它可能正试图从其工作目录加载文件,但找不到它们

参见,例如:

在启动流程之前,请使用该属性进行设置。如果未设置属性,则默认工作目录为
%SYSTEMROOT%\system32

将其设置为
GeneralStats.exe
所在的路径

ProcessStartInfo _processStartInfo = new ProcessStartInfo();
_processStartInfo.WorkingDirectory = Path.Combine(pythonDirectory + "\\Python");
_processStartInfo.FileName = @"GeneralStats.exe";
_processStartInfo.CreateNoWindow = true;
Process myProcess = Process.Start(_processStartInfo);