1. 程式人生 > >在C#中呼叫Python中遇到的坑(No module named xxx)

在C#中呼叫Python中遇到的坑(No module named xxx)

例如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