无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

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

vscode連接houdini 配置py開發(fā)環(huán)境(有坑)

2021-03-09 02:20 作者:小小の我  | 我要投稿

注意這是配置外部開發(fā)工具的方法,不是表達式欄直接打開外部編輯器的方法


配置vscode自動補全


打開vscode,選擇一個文件夾作為工作目錄,隨便建一個py文件把解釋器改成houdini目錄中的python解釋器

我的是D:\Program Files\Side Effects Software\Houdini 18.0.499\python27\python.exe,根據(jù)自己的目錄找

據(jù)說py3版houdini還有很多bug,所以我暫時還是用py2的

然后在工程目錄的.vscode文件夾里打開settings.json,在其中添加如下變量

"python.autoComplete.extraPaths": [你的houdini路徑\\houdini\\python2.7libs]

這個是hou package的包,另外有兩個在houdini目錄下的python27/lib/site-packages和python27/lib/site-packages-forced,都是hou的依賴項(其實后兩個不加也行)

我添加之后setting是這樣的

下面那個analysis.extraPaths變量是vscode根據(jù)自動補全路徑自動添加上的,不知道是不是新功能,不用管它

現(xiàn)在可以隨便建個py文件來來看看是否能自動補全

(我最開始添加自動補全這一步失效了,搞了好久也沒發(fā)現(xiàn)自己操作有什么問題,最后卸載vscode重裝就好使了,估計是什么插件沖突的問題,如果實在弄不出來也重裝試試吧)

建立與houdini的連接


連接方式還是比較簡單的,在官方文檔中就有寫

根據(jù)文檔提示,首先在houdini中新建工具,輸入

import hrpyc

hrpyc.start_server()


hou.ui.displayMessage("Service is running")

使用外部編輯器的時候先點擊一下這個腳本

這個服務(wù)默認端口是18811,額外開啟一個線程,想自定義端口可以在start_server函數(shù)中傳入port=端口號,想使用houdini的主線程可以傳入use_thread=False

然后建個py文件,先建立連接

import?hrpyc

connection,?hou?=?hrpyc.import_remote_module()

執(zhí)行之后觸發(fā)導(dǎo)入異常,因為vscode只是補全,執(zhí)行時并沒有把包路徑放到尋找路徑中,導(dǎo)入之前再添加兩條臨時路徑(替換成自己的安裝包目錄)

※不要將hou包添加到python的全局包查找目錄,原因后面有

import?sys

sys.path.append(r"D:\Program?Files\Side?Effects?Software\Houdini?18.0.499\houdini\python2.7libs")

sys.path.append(r"D:\Program?Files\Side?Effects?Software\Houdini?18.0.499\python27\lib\site-packages")

最后是這樣

運行一下,不報錯了

然后在后面隨便寫個東西(注意此時不要導(dǎo)入hou)

hou.node('/obj').createNode('null',?node_name='dnmd')

hou.ui.displayMessage('wdnmd')

創(chuàng)建一個名字是dnmd的空物體,再顯示一條信息

確實連接上了,但是問題是按照文檔的操作方式是沒有自動補全的,官方的說法現(xiàn)在的hou是一個類似houdini中hou程序包的對象,這個對象是把代碼發(fā)送到hython之后解析的,而并不能供我們在vscode中作為自動補全使用,如果我們import hou,hou對象會被覆蓋導(dǎo)致代碼失效

我查到可以在pycharm中添加這條無效的代碼

if False:

????import hou

來讓程序以為hou是導(dǎo)入到文件的實例,但在vscode中有pylance這個交互解析插件(我認為它是挺好用),它智能地把你后面這條語句變灰并提示你這條代碼是不會被執(zhí)行的,所以后面的代碼依然不會把hou作為包來解析幫助自動補全

使用pylance會在后面的解析中自動忽略不會執(zhí)行的語句


但我們可以利用剛才那個導(dǎo)入異常來讓vscode以為這條代碼可能是可以執(zhí)行的

try:

????import?hou

except?ImportError:

????pass

成了,但我們知道執(zhí)行的時候肯定會觸發(fā)導(dǎo)入異常然后自動忽略它的,都是些雕蟲小技

然后把這些整理一下單獨存為一個包叫connect_hodini或是什么的

之后要編寫其他腳本只需要在這個工程目錄建文件然后導(dǎo)入它就可以帶著自動補全寫了,而且寫完不用做其他操作直接執(zhí)行,這就很方便了

甚至不需要import hou

可惜的是經(jīng)過函數(shù)返回之后的對象并不能自動解析,因為包里的方法并沒指定會返回什么類型的對象,我暫時也沒想到什么方法,就算用houdini里的python shell來寫它一樣解析不到

等py3版本完善之后有了typing標(biāo)注就自然解決了


vscode連接houdini 配置py開發(fā)環(huán)境(有坑)的評論 (共 條)

分享到微博請遵守國家法律
团风县| 吴堡县| 淳安县| 湄潭县| 扶风县| 辛集市| 宝山区| 沾益县| 化隆| 江西省| 青阳县| 马尔康县| 孙吴县| 中卫市| 喀喇沁旗| 罗田县| 遂川县| 抚远县| 宜川县| 黔南| 岑巩县| 桑植县| 屏边| 札达县| 聂拉木县| 葵青区| 汉沽区| 义马市| 茌平县| 包头市| 新邵县| 库伦旗| 施秉县| 孝感市| 临湘市| 隆昌县| 荥阳市| 太谷县| 垣曲县| 临漳县| 扬中市|