You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#中调用Python脚本报错:openseespy依赖Python 3.8版本

问题

使用C#代码调用Python脚本生成openseespy 3D渲染模型的.html文件时,触发如下RuntimeError:

System.Exception: 'Python script exited with code 1.
Output: 
Errors: Traceback (most recent call last):
  File "C:\Users\users_j77wa4\AppData\Local\Programs\Python\Python311\Lib\site-packages\openseespy\opensees\__init__.py", line 19, in <module>
    from openseespywin.opensees import *
  File "C:\Users\users_j77wa4\AppData\Local\Programs\Python\Python311\Lib\site-packages\openseespywin\__init__.py", line 25, in <module>
    raise RuntimeError(
RuntimeError: Python version 3.8 is needed for Windows

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\users_j77wa4\Desktop\ProjectXOutput\3d_model.py", line 2, in <module>
    import openseespy.opensees as ops
  File "C:\Users\users_j77wa4\AppData\Local\Programs\Python\Python311\Lib\site-packages\openseespy\opensees\__init__.py", line 22, in <module>
    raise RuntimeError('Failed to import openseespy on Windows.')
RuntimeError: Failed to import openseespy on Windows.

使用的C#代码如下:

public static void Execute3DRendererModelScript()
{
    SaveScript3DRendererModel();

    string scriptPath = Properties.Settings.Default.OutputFolder + "\3d_model.py";
    string pythonPath = Properties.Settings.Default.PythonInterpreter;

    var process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = pythonPath,
            Arguments = scriptPath,
            RedirectStandardInput = true,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false
        }
    };

    process.Start();

    // Read the output/error of the Python script
    string output = process.StandardOutput.ReadToEnd();
    string errors = process.StandardError.ReadToEnd();

    // Wait for the process to finish
    process.WaitForExit();

    // Handle errors if any
    if (process.ExitCode != 0)
    {
        throw new Exception($"Python script exited with code {process.ExitCode}.\nOutput: {output}\nErrors: {errors}");
    }
    else
    {
        Console.WriteLine("Python script executed successfully.");
        Console.WriteLine("Output: " + output);
    }

}

但直接打开Python3.11.exe并粘贴该脚本却能正常运行,请问这一问题的原因是什么?

原因分析
  • Python解释器路径不匹配:C#代码中Properties.Settings.Default.PythonInterpreter配置的路径可能并非你手动打开的Python3.11解释器,比如指向了Python3.8或其他版本,或者路径存在拼写错误、转义问题(比如路径中的反斜杠未正确转义)。
  • 环境变量差异:手动打开Python.exe时使用的是当前用户的完整环境变量,而C#程序调用Process时默认不会继承完整的系统环境变量,导致openseespy无法正确识别当前Python版本或找到依赖库。
  • 虚拟环境/全局环境混淆:你手动运行时可能激活了某个适配openseespy的虚拟环境,而C#调用时直接使用了全局Python解释器,未激活对应虚拟环境,导致依赖缺失或版本检测异常。
  • openseespy版本的适配逻辑:openseespywin模块的版本检测逻辑在非交互式环境下存在bug,误判了Python版本。部分旧版openseespywin对高版本Python的兼容性检测仅在交互式环境下正常,通过Process调用时触发了错误的版本校验逻辑。

内容的提问来源于stack exchange,提问作者Seyitcan Öz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:33:18