例如Python的代码是这个样子的。

# coding=<utf-8>
# -*- coding: utf-8 *-

import requests
import urllib

def ClearDirect():#直接删除
print('sadsa')

C#调用

static void Main(string[] args)
{
ScriptRuntime pyRuntime = Python.CreateRuntime(); //创建一下运行环境
var engine = pyRuntime.GetEngine("python");
dynamic obj3 = pyRuntime.UseFile(@"C:\Users\HYCX\Downloads\CSharpCallPython2\PythonApplication2\demo.py"); //调用一个Python文件
Console.WriteLine(obj3.ClearDirect());
}

会报错

C# 调用python ironpython No module named xxx_c#


谷歌一下各种bug,有的人说这样添加库。在python的代码中这么搞。

sys.path.append('你的django项目路径')
sys.path.append('python的site-packages路径')

那我那么多python文件都得加这个吗?试了一下 也不行。

所以咱们在C#调用的时候 加载 后台看见别人这么搞。

static void Main(string[] args)
{
ScriptRuntime pyRuntime = Python.CreateRuntime(); //创建一下运行环境
var engine = pyRuntime.GetEngine("python");
var pyScope = engine.CreateScope();
var paths = engine.GetSearchPaths();

paths.Add(@"C:\Python27amd64\Lib");

engine.SetSearchPaths(paths);
dynamic obj3 = pyRuntime.UseFile(@"C:\Users\HYCX\Downloads\CSharpCallPython2\PythonApplication2\demo.py"); //调用一个Python文件
Console.WriteLine(obj3.ClearDirect());
}

弄完之后 还是不行。

最后再添加一行。。。

paths.Add(@"C:\Python27amd64\Lib\site-packages");
paths.Add(@"C:\Python27amd64\Lib");

把packges也加载进去就ok了。