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

.NET Core调用Python脚本时遇TensorFlow模块找不到错误

解决.NET Core调用Python脚本时的ModuleNotFoundError(tensorflow模块找不到)

核心问题分析

在Ubuntu服务器上,手动执行Python脚本能正常加载tensorflow,但通过.NET Core调用时失败,本质是两种执行环境的环境变量、用户上下文或Python版本不匹配。

具体解决方案

1. 不要覆盖PYTHONPATH,改为追加路径

当前代码直接赋值PYTHONPATH会覆盖原有环境变量,导致系统默认Python包路径丢失。修改为追加逻辑:

// 替换原PYTHONPATH赋值代码
var existingPythonPath = start.EnvironmentVariables.ContainsKey("PYTHONPATH") 
    ? start.EnvironmentVariables["PYTHONPATH"] 
    : string.Empty;
start.EnvironmentVariables["PYTHONPATH"] = $"{existingPythonPath}:/home/ubuntu/.local/lib/python3.12/site-packages";

2. 确认Python版本与终端一致

终端执行以下命令,获取手动运行时使用的Python路径和版本:

which python3
python3 --version

如果输出路径是/home/ubuntu/.local/bin/python3(而非/usr/bin/python3),说明终端用的是用户本地安装的Python,修改C#代码中的Python路径:

FileName = "/home/ubuntu/.local/bin/python3",

3. 调整.NET进程的权限与用户上下文

若.NET Core以Web服务形式部署(如Nginx/Apache反向代理),通常会以www-data用户运行,而tensorflow安装在ubuntu用户的.local目录下:

  • 给站点包目录添加www-data的读取权限:
sudo chmod -R o+r /home/ubuntu/.local/lib/python3.12/site-packages
  • 或修改.NET服务配置(如systemd服务文件),将运行用户改为ubuntu:
[Service]
User=ubuntu

4. 添加调试输出定位差异

在Python脚本开头加入以下代码,查看运行时的实际环境信息,对比终端执行结果:

import sys
import os
print("=== Debug Info ===")
print("Python Executable:", sys.executable)
print("PYTHONPATH:", os.environ.get("PYTHONPATH", "Not set"))
print("sys.path:", sys.path)

通过.NET获取这些输出,可快速定位路径未加载或版本不匹配的问题。


内容的提问来源于stack exchange,提问作者Abdurrahman yeşilyurt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:42:44