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

如何在无Python环境的机器上部署含Pythonnet的C#应用?

解决方案:将Pythonnet应用部署到无Python环境的机器

要让你的C#应用在未安装Python的机器上运行,核心是打包完整的Python运行环境和依赖包,同时调整代码路径配置。以下是具体步骤:

1. 创建独立的Python虚拟环境

  • 用conda或virtualenv创建一个和你本地测试版本一致的虚拟环境(比如Python 3.11.2 x86)
  • 在虚拟环境中安装所需依赖:pip install pythonnet numpy
  • 将整个虚拟环境文件夹(比如命名为python-env)复制到C#项目的输出目录(如bin/Debug或bin/Release)

2. 调整C#项目的部署设置

  • 在C#项目的引用中,找到Python.Runtime(NuGet包),将其复制本地属性设置为True,确保该DLL会被打包到输出目录
  • 确认所有Pythonnet相关的依赖文件(如Python.Runtime.dll)都包含在最终的部署包中

3. 修改代码路径配置

将原来硬编码的Python DLL路径改为相对路径,并添加虚拟环境的包路径,示例代码如下:

var input1 = new double[,] { { 15 }, { 274.5 } };
// 指向打包的虚拟环境中的Python DLL
Runtime.PythonDLL = @".\python-env\python311.dll";
PythonEngine.Initialize();

dynamic sys = Py.Import("sys");
// 添加虚拟环境的依赖包路径和当前程序目录
sys.path.Append(@".\python-env\Lib\site-packages");
sys.path.Append(System.IO.Directory.GetCurrentDirectory());

dynamic test = Py.Import("Test");
int r1 = test.Test_fun(input1);

PythonEngine.Shutdown();

4. 打包部署文件

部署时,需要将以下文件/目录一起打包:

  • C#生成的exe文件
  • python-env整个目录
  • Test.py文件
  • Python.Runtime.dll及相关依赖文件

5. 关键注意事项

  • 确保Python虚拟环境的架构(x86/x64)与C#项目的目标平台完全一致,否则会出现运行时错误
  • 虚拟环境中安装的Python版本必须和你本地测试的版本相同(3.11.2),避免版本兼容问题
  • 测试部署时,可使用工具(如Process Monitor)检查是否有缺失的依赖文件,及时补充

内容的提问来源于stack exchange,提问作者Karls

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:54:23