五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ghpython調(diào)用numpy等Cpython庫的方法淺析

2023-07-09 16:29 作者:東岳整人  | 我要投稿

Python是一種簡單易學(xué)卻功能強(qiáng)悍的語言,其強(qiáng)悍的一個(gè)重要原因就在于,來自世界各地的開發(fā)者們?yōu)槠渚帉懥舜罅康膸欤@些庫簡單易用,功能涵蓋廣泛。不管是數(shù)據(jù)處理、視頻下載編輯、爬蟲、網(wǎng)頁自動化、桌面自動化、自動化辦公等,Python都有對應(yīng)的庫,以至于很多時(shí)候你甚至可以直接把他們當(dāng)成開箱即用的小工具來用,可以說是工作中的利器。

Grasshopper提供了python開發(fā)接口,但可惜的是,這里的Python是Ironpython2.7,而上述Python的庫多是基于Cpython3以上,這些功能繁多的庫,是無法被ghpython所直接調(diào)用的。

其實(shí)所謂的“調(diào)用”無非是數(shù)據(jù)的傳遞,只要明白了這個(gè)本質(zhì)性問題,肯定是可以自己編程解決一些調(diào)用問題,比如我見過的alpaca4d,直接用txt文本文件來傳遞數(shù)據(jù),還有的庫利用socket來進(jìn)行數(shù)據(jù)傳遞。但這些方法總是需要開發(fā)者自己編寫大量的代碼,而且只能針對某特定的庫,那么有沒有更加通用的辦法呢?

本文提供一種相對較為簡單易行的辦法,可供ghpython調(diào)用Cpython的庫,經(jīng)筆者測試,除了一些較為復(fù)雜的庫,大部分都可以很流暢地調(diào)用,先看效果:


調(diào)用docx生成word文檔
調(diào)用PIL把圖描點(diǎn)到犀牛中
調(diào)用vtk展示一個(gè)圓柱體


下面來講講實(shí)現(xiàn)的原理。

關(guān)鍵字:pythonnet。pythonnet是一個(gè)python包,致力于Python與.NET之間的無縫交互,使用它,既可以讓python調(diào)用.NET,也可以讓.NET調(diào)用Python。眾所周知,IronPython其實(shí)就是.NET,所以自然也可利用pythonnet來調(diào)用Python。

首先在Cpython環(huán)境下pip install pythonnet,安裝好后具體的使用方法可以參考pythonnet官方的說明,這里簡單總計(jì)一下幾處要點(diǎn):

1、在系統(tǒng)中添加PYTHONNET_PYDLL環(huán)境變量,變量的內(nèi)容為pythonxx.dll的完整路徑,比如我的電腦上就是D:\Programs\Python\Python38\python38.dll

2、在代碼中把Python.Runtime.dll所在路徑添加到系統(tǒng)路徑(用sys.path.append()添加)

3、輸入以下代碼:

clr.AddReference('Python.Runtime.dll')

from Python.Runtime import *

PythonEngine.Initialize()

4、注意所有的調(diào)用相關(guān)代碼軍需包含在with Py.GIL():代碼塊內(nèi)。

5、如需調(diào)用Python包,則可用以下形式,如調(diào)用docx:

dx = Py.Import("docx")

doc=dx.Document()

doc.add_heading(“標(biāo)題”,level=1)???? #添加標(biāo)題

doc.save(r"1.docx")

做到以上幾點(diǎn),就可以愉快地調(diào)用Cpython包了。但這個(gè)方法也不能做到萬能,比如在調(diào)用pandas的時(shí)候,我就遇到了問題,主要是數(shù)據(jù)格式似乎有問題,這個(gè)只能大家自己探索了。

以上就是ghpython調(diào)用Cpython的全部步驟,按文章應(yīng)該就能做到順利調(diào)用,如果還需要調(diào)用docx和PIL的完整代碼,請關(guān)注公眾號“建筑結(jié)構(gòu)參數(shù)化”。


ghpython調(diào)用numpy等Cpython庫的方法淺析的評論 (共 條)

分享到微博請遵守國家法律
扬州市| 托克逊县| 双峰县| 靖远县| 赣榆县| 工布江达县| 岳普湖县| 崇左市| 定结县| 民和| 绥宁县| 六盘水市| 广汉市| 钦州市| 通海县| 泸定县| 阳新县| 商丘市| 阜新市| 襄城县| 淮安市| 广汉市| 青龙| 云安县| 金寨县| 临清市| 平陆县| 杨浦区| 通化市| 浮梁县| 莱州市| 广昌县| 徐州市| 衡水市| 津南区| 潜江市| 新竹市| 高邮市| 苏州市| 泗阳县| 嫩江县|