bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

C#調(diào)用python程序的解決方案

一、前言

公司主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出原陽(yáng)免費(fèi)做網(wǎng)站回饋大家。

最近涉及到復(fù)雜網(wǎng)絡(luò)的建模和可視化輸出,程序是用C#寫的,網(wǎng)絡(luò)分析打算使用igraph-python。

自然不可避免地就考慮如何使用C#調(diào)用python程序:

二、嘗試過(guò)的方法

1. 嘗試使用.NET上的Python工具:IronPython —> 失敗

IronPython是一種在.NET和Mono上實(shí)現(xiàn)的Python語(yǔ)言,使用InronPython就可以在.NET環(huán)境中調(diào)用Python代碼。

具體地,需要在當(dāng)前解決方案的nuget管理包中,下載ironPython安裝包

IronPython自帶一套python的核心類,但是不包含第三方類,嘗試過(guò)將類從外部拷貝進(jìn)去,或在python文件中采用import等方式指定會(huì)用到的第三方類的地址等,均失敗。

(1)調(diào)用igraph-python第三方庫(kù)中的方法,總是報(bào)錯(cuò):ImportError: No module named xxx(例如:ImportError: No module named pexpect)

出錯(cuò)原因可能是:①模塊未安裝;②模塊安裝了,但是沒(méi)有安裝到python的搜索路徑中

嘗試了多種方式,①在python源碼中,使用import通過(guò)指定路徑的方式導(dǎo)入第三方庫(kù);②配置Path環(huán)境變量,把第三方庫(kù)直接寫進(jìn)環(huán)境變量等。

最后依然失敗了,以下是我覺(jué)得可行但嘗試過(guò)后失敗的方法:

甚至參考博客后,考慮過(guò)是不是安裝的方式不同,類庫(kù)的使用也會(huì)造成問(wèn)題,而不用pip改用easy install來(lái)安裝了一遍igraph-python:

各位不妨自行嘗試一下,因?yàn)槲也怀晒Σ灰欢ㄒ馕吨椒ㄓ袉?wèn)題,可能是我的配置和操作存在問(wèn)題

(2)嘗試將python打包成exe可執(zhí)行文件,然后在C#中開辟進(jìn)程調(diào)用執(zhí)行exe文件 —> 失敗

(3)在C#中開辟一個(gè)進(jìn)程,調(diào)用執(zhí)行.bat批處理文件,在批處理文件中,執(zhí)行python程序(當(dāng)然,使用的是本地的python環(huán)境) —> 成功

最后無(wú)奈之下,嘗試曲線救國(guó),在C#中開辟進(jìn)程,執(zhí)行批處理文件,在批處理文件中,通過(guò)shell命令執(zhí)行python程序。方法不夠優(yōu)雅(而且執(zhí)行批處理文件會(huì)彈出黑窗口命令行,一閃而過(guò)),但終歸是實(shí)現(xiàn)了功能。

C#創(chuàng)建進(jìn)程代碼如下:

【下列代碼是在一個(gè)Windows窗體應(yīng)用(.NET Framework)中,窗體類的一個(gè)按鈕單擊事件btn_Click()中的】

【所以各位不妨自己新建一個(gè)窗體應(yīng)用并添加一個(gè)Button按鈕,并為其綁定click事件,進(jìn)行測(cè)試】

//C#代碼

/*

* 創(chuàng)建一個(gè)進(jìn)程,調(diào)用.bat批處理文件,來(lái)執(zhí)行python源文件

* 【注意,python源文件中不能有中文字符(注釋也不能有,否則報(bào)錯(cuò))】

*/

Process proc = null;

try

{

string targetDir = string.Format(dataPath);

proc = new Process();

proc.StartInfo.WorkingDirectory = targetDir;

proc.StartInfo.FileName = "myPython.bat";

//proc.StartInfo.Arguments = string.Format("100");//this is argument

proc.StartInfo.CreateNoWindow = true;

proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//這里設(shè)置DOS窗口不顯示,經(jīng)實(shí)踐可行

proc.Start();

proc.WaitForExit();

proc.Close();

}

catch (Exception ex)

{

MessageBox.Show("Exception Occurred : " + ex.Message + ", " + ex.StackTrace.ToString());

}

批處理文件內(nèi)容如下:

【注意:.bat文件中,注釋格式使用rem,這里由于只支持shell代碼,我使用的#來(lái)注釋】

start python result.py #rem 100 100 #傳參問(wèn)題尚未解決解決

#執(zhí)行完畢后不立即關(guān)閉命令行執(zhí)行框

#rem pause

python文件如下:

# -*- coding:UTF8 -*-

#import sys #導(dǎo)入sys module;

#sys.path.append("D:\\SfotWare\\Python\\Python27\\Lib\\") #增加搜索路徑,也就是說(shuō)當(dāng)import某個(gè)module的時(shí)候,將會(huì)到已有的搜索路徑中查找;

#import igraph #導(dǎo)入CPython中名為random的module;

#---------------------------------------------------------------------

#import sys無(wú)錫好的×××醫(yī)院 http://www.zzchnk.com/

#sys.path.append(r'D:\SfotWare\Python\Python27')

#sys.path.append(r'D:\SfotWare\Python\Python27\Lib\DLLs')

#sys.path.append(r"D:\SfotWare\Python\Python27\Lib")

#sys.path.append(r"D:\SfotWare\Python\Python27\Lib\site-packages")

#sys.path.append(r'D:\SfotWare\Python\Python27\Lib\site-packages\python_igraph-0.7.1.post6-py2.7-win-amd64.egg')

#sys.path.append(r'D:\SfotWare\Python\Python27\Lib\site-packages\pycairo-1.18.0-py2.7-win-amd64.egg')

#import igraph

#---------------------------------------------------------------------

#上述注釋掉的方式,就是通過(guò)在python源文件中導(dǎo)入第三方module,未能生效

from igraph import *

edges = []

# 從文件@filename中讀入網(wǎng)絡(luò)的邊

def read_edges(filename):

fin = open(filename, "r")

for line in fin:

line = line.strip()

line = line.split(" ")

edges.append((int(line[0]) - 1, int(line[1]) - 1))

def plot_network(size):

g = Graph()

g.add_vertices(size)

g.add_edges(edges)

layout = g.layout('kk')

visual_style = {}

visual_style['layout'] = layout

visual_style['bbox'] = (500,500)

visual_style['vertex_label'] = [(label + 1) for label in range(size)]

visual_style['vertex_color'] = 'white' # 顏色

visual_style['vertex_size'] = g.degree() # 節(jié)點(diǎn)的大小與度成正比

# visual_style['vertex_size'] = 20 # 所有節(jié)點(diǎn)的大小都是相同的:20

plot(g, r"D:\Project\vs2017_project\test_csProject1\test_csProject1\bin\Debug\network_smallworld.png", **visual_style)

# 中間參數(shù)指的是存到哪里去

def main(size):

read_edges(r"D:\Project\vs2017_project\test_csProject1\test_csProject1\bin\Debug\smallworld_edges.data")

plot_network(size)

main(100) # 這里的10需要更改為網(wǎng)絡(luò)中的節(jié)點(diǎn)的個(gè)數(shù)

但如何給批處理文件傳參,尚未解決。

三、結(jié)束語(yǔ)

參考了很多博主的內(nèi)容,嘗試了很多方法,今后還需再接再厲。

上述方式中,我嘗試過(guò)但是失敗了的,各位如果成功了,或者是各位有什么新的解決方式,如果愿意跟我分享一下,我將非常感謝。希望我們共同學(xué)習(xí),共同進(jìn)步。

網(wǎng)頁(yè)題目:C#調(diào)用python程序的解決方案
標(biāo)題路徑:http://vcdvsql.cn/article2/gjshic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站網(wǎng)站收錄域名注冊(cè)全網(wǎng)營(yíng)銷推廣移動(dòng)網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)