Skip to main content

GH Python Remote 是一个包,可以让 Rhinoceros3D/Grasshopper 和 Python 更好地协作:将外部 python 实例连接到 Grasshopper,反之亦然。

项目描述

将外部 python 实例连接到 Grasshopper,反之亦然。
这使您可以直接从 Grasshopper 运行任何 Python 包,包括 numpy 和 scipy!
https://raw.githubusercontent.com/Digital-Structures/ghpythonremote/9d6773fbc0cc31cc042b5622aadd607716e952f7/GH_python_remote_plt.png

安装

需要安装 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 在开发时考虑了AnacondaMiniconda发行版,但任何 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参数,可以是567(默认),或者是目标 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

一步步

  1. 在 Grasshopper 中打开示例文件GH_python_remote.ghx,或将 gh-python-remote 组件拖放到画布上。

  2. 使用位置输入来定义要连接的 Python 解释器的位置。

  3. 使用modules输入来定义您想要在 GHPython 组件中访问的模块。

  4. 将run更改为True以进行连接。

  5. 在 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.deliverghpythonremote.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.tar.gz (120.2 kB 查看哈希

已上传 source

内置分布

gh_python_remote-1.4.4-py2-none-any.whl (122.6 kB 查看哈希

已上传 py2