例如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()); }
会报错
谷歌一下各种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了。