GH Python Remote 是一个包,可以让 Rhinoceros3D/Grasshopper 和 Python 更好地协作:将外部 python 实例连接到 Grasshopper,反之亦然。
项目描述
安装
需要安装 Python 2.7,不兼容 Python 3。兼容 Mac 和带有 Rhino 7 的 Windows。
1.安装软件依赖:
在Rhino 7中安装 gh-python-remote 之前,您需要安装 Python 2、Rhino 7,并在 Rhino 6 中打开 Grasshopper 至少一次。
在Rhino 6中安装 gh-python-remote 之前,您需要安装 Python 2、Rhino 6,并在 Rhino 6 中打开 Grasshopper 至少一次。
在Rhino 5中安装 gh-python-remote 之前,您需要安装 Python 2、Rhino 5、Grasshopper 和 GHPython,并在 Rhino 5 中的 Grasshopper 画布上放置 GHPython 组件至少一次。
安装以下内容:
- 蟒蛇 2.7 :
gh-python-remote 在开发时考虑了Anaconda和Miniconda发行版,但任何 Python 2.7 发行版都可以使用。如果您已经安装了 Python 3 的 Anaconda,则无需重新安装,您可以创建一个虚拟环境,如下所述。
如果您希望能够通过 conda 名称命名 gh-python-remote 中的虚拟环境,请在 Anaconda 安装过程中出现提示时选择“Add conda to my PATH”。
在 Mac 上,随操作系统分发的 python 已经过时,最终用户难以使用。强烈 建议使用基于 conda 或brew 的Python。
- Python虚拟环境(可选):
通过创建新的虚拟环境来隔离每个项目的依赖关系。如果您使用 Anaconda 或 Miniconda,创建虚拟环境很容易。
打开 Windows 命令提示符或 Mac 终端(或 Anaconda 提示符,如果您选择在安装期间不将 conda 添加到 PATH)
运行以下命令:
conda create --name rhinoremote python=2.7 numpy scipy
这将创建一个名为rhinoremote的新虚拟环境,并在其中安装 numpy 和 scipy。
- 犀牛3D :
Windows 和 Mac 支持版本 7。Windows 上的版本 5 和 6 应该可以工作,但不受支持。
- 蚱蜢:
在 Rhino 6 和 7 上,它已经安装好了。在 Rhino 5 上,安装版本 0.9.0076。在继续之前至少打开一次。
- GH Python :
在 Rhino 6 和 7 上,它已经安装好了。在 Rhino 5 上,安装 0.6.0.3 版本。在 Rhino 5 上,将其放在 Grasshopper 画布上至少一次,然后再继续。
2.安装gh-python-remote:
从 Windows 命令提示符或 Mac 终端(或特殊的 Anaconda 或 Python 提示符,如果默认情况下 pip 不在您的路径中),运行:
(如果您使用的是虚拟环境,请记住先 激活 它。使用上面的 conda 虚拟环境,您需要 在命令提示符下运行conda activate rhinoremote 。)
pip install gh-python-remote --upgrade
python -m ghpythonremote._configure_ironpython_installation
这将为 Rhino 7 安装 gh-python-remote,并在所有 Grasshopper 版本中安装 gh-python-remote UserObject。
ghpythonremote._configure_ironpython_installation脚本采用一个可选的location参数,可以是5、6、7(默认),或者是目标 IronPython 包目录的路径。
例如,要为 Rhino 5 安装,请将第二个命令替换为:
python -m ghpythonremote._configure_ironpython_installation 5
要安装到其他位置:
python -m ghpythonremote._configure_ironpython_installation ^
"%APPDATA%\McNeel\Rhinoceros\7.0\Plug-ins\^
IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib"
用法
所有示例文件在 Windows 上复制到 % APPDATA%\Grasshopper\UserObjects\gh-python-remote\examples ,在 Mac上复制到~/Grasshopper/UserObjects/gh-python-remote/examples 。您也可以从github repo下载它们。
从蚱蜢到 Python
一步步
在 Grasshopper 中打开示例文件GH_python_remote.ghx,或将 gh-python-remote 组件拖放到画布上。
使用位置输入来定义要连接的 Python 解释器的位置。
使用modules输入来定义您想要在 GHPython 组件中访问的模块。
将run更改为True以进行连接。
在 GHPython 组件中,导入的模块现在可以通过粘性字典获得。例如,如果您尝试使用 Numpy:
import scriptcontext np = scriptcontext.sticky['numpy']
笔记
从大型本地列表创建远程类似数组的对象很慢。例如,np.array(range(10000))需要超过 10 秒。为了解决这个问题,您需要首先将列表发送到远程解释器,然后从这个远程对象创建数组:
import scriptcontext as sc
import ghpythonremote
np = sc.sticky['numpy']
rpy = sc.sticky['rpy']
r_range = ghpythonremote.deliver(rpy, range(10000))
np.array(r_range)
此外,Grasshopper 不会将远程列表对象识别为列表。他们需要先恢复到本地解释器:
import scriptcontext as sc
import ghpythonremote
from ghpythonlib.treehelpers import list_to_tree # Rhino 6 only!
np = sc.sticky['numpy']
a = np.arange(15).reshape((3,5))
a = ghpythonremote.obtain(a.tolist())
a = list_to_tree(a, source=[0,0])
ghpythonlib.treehelpers仅适用于 Rhino 6,如果您在 Rhino 5 上需要它,请参阅treehelpers gist以获得等效实现。
快速参考:
* 标记只能通过编辑 gh-python-remote UserObject 或在 GH_python_remote.ghx中使用的输入。
- 论据:
- *代码(字符串):
GH_to_python.py代码文件的路径。
- 位置(字符串):
python 可执行文件的路径,或包含python.exe的文件夹,或以 conda ://为前缀的 conda 创建的虚拟环境的名称(conda://env_name,需要您的 PATH 中提供conda)。如果为空,则从您的 Windows %PATH%中查找 python 。
- 运行(布尔值):
当设置为 True 时,创建连接并导入新模块。当变为 False 时,终止连接并删除对导入的引用。
- 模块(字符串列表):
要在远程 python 中导入的模块名称列表。它们将被添加到scriptcontext.sticky字典中,允许在同一个 Grasshopper 文档中的其他 python 组件中重用它们。必须将子模块(例如numpy.linalg)显式添加到此列表中以供以后使用,并且即使仅使用子模块,也需要导入父包。
- *log_level(来自 ['NOTSET'、'DEBUG'、'INFO'、'WARNING'、'ERROR'、'CRITICAL'] 的字符串):
用于本地 IronPython 和远程 python 实例的日志记录级别。
- *working_dir(字符串):
远程 python 实例的工作目录。
- 返回:
- 出(字符串):
带有调试信息的控制台输出。
- linked_modules(字符串列表):
导入的模块名称列表。
- rpy(rpyc连接对象):
表示远程 Python 解释器的对象。
- import_statements(字符串):
在 GHPython 组件中使用什么来实际使用导入的模块。
从 Python 到蚱蜢
您还可以使用 gh-python-remote 以编程方式控制 Rhinoceros 实例,并通过 Python 连接到它。查看示例/python_to_GH.py以获得完整的工作示例。
执照
在MIT许可下获得许可。
变更日志
1.4.4 (2021-02-12)
使固定
缺少逗号…
1.4.3 (2021-02-12)
使固定
将测试集群添加到已安装的文件(#40)。
1.4.2 (2021-02-02)
使固定
修复助手日志格式中的拼写错误
1.4.1 (2021-01-27)
使固定
修复在 MacOS 安装上产生错误警告的小错字
1.4.0 (2021-01-27)
新的
添加对 Rhino 7 的支持。
添加对 MacOS 的支持。
1.3.1 (2020-04-01)
变化
允许从 CPython 访问 GH 用户对象。从 PythonToGrasshopperRemote 对象作为py2gh.gh_remote_userobjects.<UO Name>访问它们
删除 GhCompService.get_component。从 PythonToGrasshopperRemote 对象访问远程 GH 组件作为py2gh.gh_remote_components.<Component Name>
使固定
修复 Rhino 6 的 CPython -> Rhino Python 连接。
1.3.0 (2020-03-20)
新的
添加选项以在 CPy 中选择 Rhino 版本到 GH (#29)。
变化
更好的 Rhino 路径查找器。
捕获 conda env 列表失败。
升级到 RPyC 4.1.4
使固定
修复安装时丢失的文件。
修复异步请求超时(#14)。
修复传递给 pythonservice.py 的日志级别。
1.2.1 (2019-07-24)
使固定
清理示例目录,并在安装时修复丢失的文件 (#26)。
更新 .ghuser 文件中的记录器名称
1.2.0 (2019-07-08)
新的
现在完全兼容 Rhino 6。
变化
使用特殊的 RPyC 发行版恢复,现在明确使用上游。
升级到 RPyC 4.1.0。
将 rpyc 隐藏在特殊的 ghpythonremote 导入后面。rpyc.utils函数交付和获取可作为ghpythonremote.deliver和ghpythonremote.obtain 使用;如果需要,应该使用from ghpythonremote import rpyc 导入rpyc。
扩展 CPython 子进程中的环境路径,尝试匹配 conda 会做的事情,帮助 Numpy 找到它的 DLL。
使固定
在不推荐使用 pip.main 的最近 pip 上修复 pip install 命令。
修复与 IronPython 2.7.0 的不兼容性。
使用 IronPython 的猴子补丁兼容性修复程序修复与 RPyC 4.1.0 的不兼容性。
删除不必要的 pip 安装参数。
1.1.4 (2018-02-28)
使固定
根据 rpyc v4,停止对远程属性使用公开的前缀。
1.1.3 (2018-02-27)
使固定
将异步导入从 rpyc重命名为async_。
将 rpyc 版本转换为pilcru/rpyc @ 3 。4 . 6修复 IronPython 2.7.0 转储字节问题。
1.1.2 (2018-02-23)
使固定
对依赖项使用 https 文件位置,以消除安装时对 git 的需要。
1.1.0 (2018-02-14)
新的
记录了 rpyc 的获取和交付功能,以加速远程类数组对象的创建和检索。
变化
使用 rpyc 的 v4.0.0 预发行版来修复 IronPython <-> CPython str unpickling 问题。
改进连接丢失时的错误消息。
使固定
修复 GH 到 python 示例,其中参数传递(用于端口配置)被破坏。
1.0.4 (2017-10-06)
使固定
修复 IronPython 的 pip install 命令中的引号转义问题。
1.0.3 (2017-10-02)
首次公开发布。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
gh_python_remote -1.4.4-py2-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 02ac64f26fb0dd88be37a8166aef2b002fcdaa995911d9453111b19beb8e14de |
|
MD5 | e089ce42a7124109c2057d03232f3d75 |
|
布莱克2-256 | 0b15757df4424310efdfff9ed0fc314a613ef76d085067ab7666be90b3895556 |