本文目錄一覽:
- 1、VS2010中 Python的可視化編程如何實現??
- 2、怎樣把Python代碼嵌入到C程序
- 3、在c++中嵌入python時,程序無法運行,原因是python27_d.dll丟失,如何解決?
- 4、怎樣在vs2010這個集成環境上,使用python語言?
- 5、vs2010中怎麼編輯ironpython腳本代碼
VS2010中 Python的可視化編程如何實現??
pyqt開發我們都是用eric4的。所以也不需要手動生成py文件了,一鍵編譯。
vs2010用來做.net, c++開發當然很好。用來做python開發,彆扭。還比不上eclipse+pydev。某些商業版本的IDE功能也是很強大的。比如pycharm,wingide
可視化編程的鼻祖是delphi,後來這位老大被微軟請去做了j++, c#等。dotnet時期的VISUAL 都有一點點delphi的痕迹。可惜與delphi還是差了很遠。架構不好。並不是人多才做得好。這位一個人就可以做到最好。
不可否認vs這個集成環境,是目前最好的。不過python的編程習慣風格與它還不太一致。另外新版本的VS把舊版的好多方便使用的功能去掉了。有些象是office 2003以後版本,很難用的說。
怎樣把Python代碼嵌入到C程序
步驟1:安裝Python開發包
由於需要訪問Python/C API,首先安裝Python開發包。
在Debian,Ubuntu或Linux Mint中:
在CentOS,Fedora或RHEL中:
安裝成功後,Python頭文件在/usr/include/python2.7。根據Linux發行版的不同,確切的路徑可能是不相同的。例如,CentOS 6中是/usr/include/python2.6。
步驟2:初始化解釋器並設置路徑
C中嵌入Python的第一步是初始化Python解釋器,這可以用以下C函數完成。
初始化解釋器後,需要設置你的C程序中要導入的Python模塊的路徑。例如,比如你的Python模塊位於/usr/local/modules。然後使用以下C函數調用來設置路徑。
步驟3:數據轉換
C中嵌入Python最重要的方面之一是數據轉換。從C中傳遞數據到Python函數,需要首先將數據從C數據類型轉換到Python數據類型。Python/C API提供各種函數來實現這。例如,轉換C字符串到Python字符串,使用PyString_FromString函數。
另外一個類似函數PyInt_FromLong,將C中long數據類型轉換為Python int。每個Python/C API函數返回一個PyObject類型的引用。
步驟4:定義一個Python模塊
當你想嵌入Python代碼到另一種語言如C,該代碼需要被寫成Python模塊,然後用另一種語言“導入”。所以讓我們來看看如何在C中導入Python模塊。
為了進行說明,我們實現一個簡單的Python模塊例子如下:
以上的Python函數有一個字符串作為參數並返回兩個重複的字符串。例如,如果輸入字符串是“cyberpersons”,該函數返回’cyberpersonscyberpersons’。此模塊文件命名為“printData.py”並將它放在前面聲明的Python模塊目錄中(/usr/local/modules)。
步驟5:加載一個Python模塊
現在你已經定義了Python模塊,是時候在C程序中加載它了。導入模塊的C代碼看起來像這樣:
步驟6:構建函數的參數
當加載一個模塊時,可以調用模塊中定義的Python函數。通常,我們需要傳遞一個或多個參數到一個Python函數。我們必須構建一個Python元組對象,它包括Python函數中的參數。
在我們的例子中,printData函數定義帶一個參數的模塊。因此,我們構建一個大小是一的Python元組對象如下。我們可以使用PyTuple_SetItem設置元組對象的每個項。
我們已經成功構建一個參數傳遞到函數調用,是時候從C程序調用python函數了。
步驟7:調用Python函數
一旦成功創建Python元組對象作為函數參數,我們可以調用一個帶參數的Python函數。為此,通過使用PyObject_GetAttrString首先獲得模塊中定義的函數的引用,然後使用PyObject_CallObject調用該函數。例如:
步驟8:錯誤檢查
避免運行時錯誤的常見方法是檢查函數的返回值並根據返回值採取適當的行動。類似於C程序中的全局變量errno,Python/C API提供一個全局指示符,它報告最後發生的錯誤。當Python/C API函數失敗,全局指示符設置為指示錯誤,並且PyErr_Print可以用於顯示相應的人類可讀的trackback。例如:
在你的應用程序中,你可以輕鬆地將各種錯誤檢查。
這裡是完整的C程序,它如本教程描述的嵌入Python代碼。
步驟9:編譯和執行
保存以上代碼到finalCode.c,並且鏈接Python庫(-lpython2.7)編譯該代碼。根據發行版的不同,可能使用不同的版本(例如,-lpython2.6)。
在c++中嵌入python時,程序無法運行,原因是python27_d.dll丟失,如何解決?
你把python27.dll複製成python27_d.dll就可以了。然後把dll放到windows/system32目錄。或者是程序執行目錄中。
原因是你的程序是debug版本的。你編譯成release版本就沒有這個問題了。
你編譯能成功可見python27的lib應該連接成了。如果動態鏈接庫就在當前目錄里,但是就是引用不成功,你可以試驗使用filemon這個程序監控一下調用過程。來確認目錄是否正確。如果loadlibrary不成功,通常是目錄問題或者是程序版本問題。
“安裝目錄下的DLL中”, 這句話有些費解。直接放在執行文件同一個目錄中。
怎樣在vs2010這個集成環境上,使用python語言?
習c語言就是學習它的“語法知識”,掌握之後就根據自己的其他方面的需求來靈活運用,解決問題。
英語好似要求一些,不過不是很多。
自己整本教材(國內的就隨便整本,90%的內容雷同),然後耐下性子,看看。肯定會有許多不懂的地方,別怕.c語言既簡單又複雜,簡單到初學者和快能掌握,複雜到大學這方面的教授都不能全懂。
有耐心,對一個問題多從幾方面思考。堅持下去,C語言會有用的!!
vs2010中怎麼編輯ironpython腳本代碼
.NET 4裡面有一項重要的功能,就是動態語言,可以在.NET代碼中直接調用第三方的動態語言腳本
ScriptRuntime py = Python.CreateRuntime();
//Dynamic feature only works on objects typed as ‘dynamic’
dynamic helloworld = py.UseFile(“helloworld.py”);
Console.WriteLine(“helloworld.py loaded!”);
for (int i = 0; i 1000; i++)
{
Console.WriteLine(helloworld.welcome(“Employee #{0}”), i);
}
這是Visual Studio 2010中使用IronPython的例子,為了運行這個程序,請下載IronPython, 例子中的的源代碼如下
def welcome(name):
return “Hello ‘” + name + “‘ from IronPython”
現有IronPython 2.7.1 已經直接做成了Visual Studio的解決方案項目,簡單方便省事。
幾乎不用任何配置,直接安裝下載回到的IronPython-2.7.1安裝文件即可,它會為你的Visual Studio創建Python項目模板。在x86的電腦上,可以產生四個類型的項目模板,Console Application,WinForms Application,IronPython Silverlight Web Page,Wpf Application,而在x64的平台上,只產生了Console Application項目模板。
但是,這樣還有點不方便,Python在這裡被當成腳本語言,它的Build Action=None,意味着沒有任何編譯行為,這樣會給代碼的調試工作帶來不方便之處。需要安裝工具Python Tools for Visual Studio。
先卸載已經安裝的IronPython工具包,才能繼續安裝Python Tools for Visual Studio。安裝完成之後,項目模板又多了二項模板,Python Application和Python MPI Application。新建立一個Python Application項目
請先到Tools-Options的Python Tools中新建一個Interpreter,在Interpreter Options中點擊Add Interpreter按鈕,保存退出即可。然後就可直接在編輯器中放斷點,調試的體驗和調試.NET語言一樣,Call Stask,Intermediate Window,Watch窗口都可用,這種感覺是相當的方便。再看看Program.py的文件屬性,它的Build Action=Compile。
在安裝工具包的同時,也同時會安裝Python的命令行交互程序,這個程序可以當計算器用,直接輸入表達式的值,它可以馬上幫助你計算出結果。再來看看下面的Python的兩個例子代碼,以幫助你了解和學習這種語言。
Lambda表達式,這個可以簡化代碼的編寫,請看Python的實現
func = lambda s: s * 3
print func(“peter “)
func2 = lambda a, b: a * b
print func2(2, 3)
調試這段代碼,在Output窗口可以顯示它的執行結果。Lambda表達式減少了很多不必要的代碼。
Python的for循環語句,它的一種寫法是這樣的
for i in range(0, 10,2):
print i
起始變量0,10是終止變量(不包括10),2是步長。.NET 4中引入了並行循環,它的代碼例子如下
Parallel.For(0, Int64.MaxValue, i =
{
Console.WriteLine(“i={0},thread id={1}”, i, Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
});
整理一下文章的思路,您首先要選擇一門腳本語言,來為你的應用程序提供動態代碼執行能力。在這裡,我選擇Python語言,並選擇它的.NET實現版本IronPython。其次,我要對腳本與.NET host之間的代碼互操作有所了解,如何把.NET的變量傳到腳本中,如何傳回腳本的執行結果到.NET代碼中。最後,我需要一個靈活方便的腳本編輯工具,並且可以提供強大的調試功能。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/254566.html