我已经使用Python2.7创建了一个脚本,并使用pyinstaller将其编译为同名的exe,在这种情况下,使用--onefile和-w参数将“ GeneralStats.py”转换为“ GeneralStats.exe”。 / p>
使用C#调用时,我使用:
var pythonDirectory = (Directory.GetCurrentDirectory());
var filePathExe1 = Path.Combine(pythonDirectory + "\\Python\\GeneralStats.exe");
Process.Start(filePathExe1);
在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);
答案 0 :(得分:1)
您需要为Process
设置工作目录-它可能正在尝试从其工作目录中加载文件,但找不到它们。
例如,参见this:
在开始该过程之前,使用
ProcessStartInfo.WorkingDirectory
属性进行设置。如果未设置该属性,则默认工作目录为%SYSTEMROOT%\system32
。
将其设置为GeneralStats.exe
所在的路径。