在C#中呼叫Python中遇到的坑(No module named xxx)
阿新 • • 發佈:2019-10-19
例如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了。
&n