最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)境(有坑)的評論 (共 條)

分享到微博請遵守國家法律
汉寿县| 黑水县| 潢川县| 申扎县| 广安市| 永福县| 运城市| 滦南县| 宜川县| 金阳县| 海阳市| 海盐县| 柳江县| 铁力市| 玉屏| 内江市| 德清县| 巴林左旗| 抚宁县| 若尔盖县| 卫辉市| 定襄县| 余庆县| 阳原县| 昌邑市| 丰宁| 翼城县| 石狮市| 桑日县| 普格县| 天祝| 浮山县| 滨州市| 温泉县| 涿鹿县| 咸宁市| 邵东县| 泽普县| 阳山县| 毕节市| 普兰店市|