You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rhino 8与Grasshopper:外部Python IDE中Rhino模块导入配置问题

Rhino 3D Python外部IDE配置问题

我用Rhino 3D和Grasshopper辅助工程师做Python编程,Python运行时自动安装在C:\Users\Patrick Bucher\.rhinocode\py39-rh8,脚本在Rhino集成Python编辑器里运行正常,但想改用Visual Studio Code、PyCharm这类外部IDE编写代码,并用PyTest执行测试。

创建虚拟环境

我基于现有环境创建了虚拟环境,执行命令:

'C:\Users\Patrick Bucher\.rhinocode\py39-rh8\python.exe' -m venv env --system-site-packages

注:使用--system-site-packages参数以包含系统站点包路径。

遇到的错误

但在这个虚拟环境里运行demo.py(代码如下)时失败:

import Rhino
dir(Rhino)

报错信息:

> python .\demo.py
Traceback (most recent call last):
  File "C:\Users\Patrick Bucher\solartables-constructable\demo.py", line 1, in <module>
    import Rhino
ModuleNotFoundError: No module named 'Rhino'

对比sys.path排查问题

于是我在Grasshopper里运行以下脚本获取正确的sys.path:

import sys
print(sys.path)

输出结果:

['C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-envs\\default-kG+mgfz0', 'C:\\Users\\Patrick Bucher\\AppData\\Roaming\\McNeel\\Rhinoceros\\8.0\\scripts', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-rhinoghpython', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-rhinopython', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-interop', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\python39.zip', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\DLLs', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\lib', 'C:\\Program Files\\Rhino 8\\System', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\lib\\site-packages', 'C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App\\7.0.0\\']

我写了syspathdiff.py脚本对比外部IDE环境的sys.path:

import sys
rhino = set(['C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-envs\\default-kG+mgfz0', 'C:\\Users\\Patrick Bucher\\AppData\\Roaming\\McNeel\\Rhinoceros\\8.0\\scripts', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-rhinoghpython', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-rhinopython', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-interop', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\python39.zip', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\DLLs', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\lib', 'C:\\Program Files\\Rhino 8\\System', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\lib\\site-packages', 'C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App\\7.0.0\\'])
actual = set(sys.path)
missing = rhino - actual
print(missing)

得到缺失的路径:

{'C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App\\7.0.0\\', 'C:\\Program Files\\Rhino 8\\System', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-rhinoghpython', 'C:\\Users\\Patrick Bucher\\AppData\\Roaming\\McNeel\\Rhinoceros\\8.0\\scripts', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-interop', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-envs\\default-kG+mgfz0', 'C:\\Users\\Patrick Bucher\\.rhinocode\\py39-rh8\\site-rhinopython'}

我的问题

  1. 如何配置虚拟环境,让PyTest测试用例及其他涉及Rhino模块的脚本能成功导入该模块?
  2. 需要添加哪些额外路径,才能在Python代码中访问Rhino模块?

补充说明

存在供CLR使用的RhinoCommon.dll,可通过pythonnet包(执行pip install pythonnet安装)导入:

try:
    import Rhino.Geometry as rg
except ModuleNotFoundError:
    import clr
    rhino = clr.AddReference(r"C:\Program Files\Rhino 8\System\netcore\RhinoCommon.dll")
    print(rhino)

输出结果:

RhinoCommon, Version=8.6.24101.5001, Culture=neutral, PublicKeyToken=552281e97c755530

我不清楚如何在Python中使用该导入后的库,望得到相关提示。


内容的提问来源于stack exchange,提问作者Patrick Bucher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:25:13