pilcru / ghpythonremote Goto Github PK
View Code? Open in Web Editor NEWA two-way connector to use regular Python from IronPython in Rhino/Grasshopper, and vice-versa.
Home Page: https://github.com/pilcru/ghpythonremote
License: MIT License
A two-way connector to use regular Python from IronPython in Rhino/Grasshopper, and vice-versa.
Home Page: https://github.com/pilcru/ghpythonremote
License: MIT License
The path to use in the custom install location (doc only) should be one level deeper, in ...\settings\lib
Thank you for this nice package.
I have a quite complicated situation.
I have a docker container that contains a python venv and i want to execute commands from my Rhino python code.
Is this currently possible with this library or dou you know how to achieve this?
Furthermore, Rhino 8 is adding some newer CPython functionality do you think it is feasible to enable newer Python versions here?
Thanks!
Hi,
First of all thanks for this amazing plugin!
I was wondering if you plan support for python 3 version anytime soon? It would open a lot of possibilities to certain areas.
Kind regards,
Theodore.
Hi guys,
is there a workaround in order to get python 3 support?
I'm really looking a way to connect this to tensorflow and that only runs on python 3+.
I did try a workflow with gh_cpython, that worked well with tensorflow, but then I'm missing out on sc.sticky etc.
What it says in the title
Hi,
I'm facing an issue when trying to load a specific method from the Google "Or-Tools" library.
I have installed the library in the correct environment ("rhinoremote") and loading it from there works fine:
I can import ortools.sat.python
via the sticky dictionary but can't seem to figure out how to access the cp_model
method from there:
For clarity, the tree structure:
ortools__
sat__
python__
__init__.py
cp_model.py
cp_model_helper.py
vizualisation.py
Am i missing something obvious or is it a limitation from GhPythonRemote ?
Any chance an update for python3 could be available to tap into external data and use the powerful processing capacity of python, like pandas, numpy, etc and some arduino stuff?
Hi,
Thank you for your reply on Food4Rhino.
I am trying to use python remote on Rhino 5 SR13 and GH 0.9.0076. Python 2.7 Anaconda2.
I followed the step of the installation but when I open the example file GH_python_remote and change the paths I get this error message:
DEBUG: ghpythonremote.helpers:
Directly trying python executable at C:\Users\Hp\Anaconda2\envs\rhinoremote
DEBUG: ghpythonremote.connectors:
Using python executable: C:\Users\Hp\Anaconda2\envs\rhinoremote\python.exe
DEBUG: ghpythonremote.connectors:
Using rpyc_server module: C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\pythonservice.py
DEBUG: ghpythonremote.connectors:
Using port: 50011
DEBUG: ghpythonremote.connectors:
Using log_level: DEBUG
DEBUG: ghpythonremote.connectors:
Using working_dir: C:\Users\Hp\Downloads\ghpythonremote-1.3.1\ghpythonremote-1.3.1\ghpythonremote\examples
INFO: ghpythonremote.connectors:
Connecting...
DEBUG: ghpythonremote.connectors:
Connecting. Timeout in 10 seconds.
Runtime error (ArgumentTypeException): expected buffer, got bytes
Traceback:
line 469, in sync_request, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 105, in _connect, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\service.py"
line 44, in connect_channel, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\factory.py"
line 99, in connect, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\factory.py"
line 141, in _get_connection, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\connectors.py"
line 54, in script
line 267, in write, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\stream.py"
line 74, in send, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\channel.py"
line 259, in _send, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 475, in _async_request, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 493, in async_request, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 502, in root, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 213, in on_connect, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\service.py"
line 56, in connect_stream, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\factory.py"
line 53, in init, "C:\Users\Hp\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\connectors.py"
Thank you in advance for your help
rpyc seems to have some problems with delivering string input, but the problem symptoms varies depending on the python packages.
All the examples below are run on a 64-bit Windows 10 machine with Rhino 6, conda env python 2.7
, gh-python-remote 1.2.1
.
Error script 1: numpy.fromstring
import scriptcontext as sc
np = sc.sticky['numpy']
np.fromstring(str('1 2'), dtype=int, sep=str(' '))
Result π΄ :
Runtime error (Exception): data type not understood
Traceback:
line 102, in value, "C:\Users\harry\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\async_.py"
line 458, in sync_request, "C:\Users\harry\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 76, in syncreq, "C:\Users\harry\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
line 247, in __call__, "C:\Users\harry\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
line 17, in script
Error script 2: pycddlib
import scriptcontext as sc
import ghpythonremote
cdd = sc.sticky['cdd']
mat = cdd.Matrix([[2,-1,-1,0],[0,1,0,0],[0,0,1,0]], number_type='fraction')
# f_converted = ghpythonremote.deliver(rpy, 'fraction')
# mat = cdd.Matrix([[2,-1,-1,0],[0,1,0,0],[0,0,1,0]], number_type=f_converted)
The ghpythonremote.deliver
conversion results in the same error.
Result π΄ :
Runtime error (Exception): Argument 'number_type' has incorrect type (expected str, got unicode)
Traceback:
line 102, in value, "C:\Users\harry\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\async_.py"
line 458, in sync_request, "C:\Users\harry\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 76, in syncreq, "C:\Users\harry\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
line 247, in __call__, "C:\Users\harry\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
line 5, in script
But, the string input works in some cases... For example, the [scipy.optimize.minimize_scalar](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize_scalar.html#scipy.optimize.minimize_scalar)
:
Passed script:
import scriptcontext as sc
scipy = sc.sticky['scipy']
scipy.optimize = sc.sticky['scipy.optimize']
def f(x):
return (x - 2) * x * (x + 2)**2
res = scipy.optimize.minimize_scalar(f, bounds=(-3, -1), method='bounded')
print(res)
Result π :
fun: 3.2836517984978577e-13
message: 'Solution found.'
nfev: 12
status: 0
success: True
x: -2.000000202597239
Hi @pilcru! Sorry to bother you, but i seem to be stuck at the installation step and really would like to try this amazing plugin.
I've followed meticulously the installation guide, but i'm also very new to all of this so i may do miss something easy.
Basically i've installed Anaconda3 (selecting "Add conda to my PATH"), created the env rhinoremote, activated it and run the provided commands.
Problems seem to happen when running the ghpyr configure ironpython installation: i've tried running the general one and the one with a specific folder, but this is what shows (in the conda prompt, win cmd prompt or powershell)
(rhinoremote) C:\Users\PREDATOR>conda env list
# conda environments:
#
base C:\Users\PREDATOR\anaconda3
rhinoremote * C:\Users\PREDATOR\anaconda3\envs\rhinoremote
(rhinoremote) C:\Users\PREDATOR>python -m ghpythonremote._configure_ironpython_installation ^
Ancora? "%APPDATA%\McNeel\Rhinoceros\7.0\Plug-ins\^
Ancora? IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib"
The gh-python-remote package will be installed in Rhino IronPython with the command:
C:\Users\PREDATOR\anaconda3\envs\rhinoremote\python.exe -m pip install --upgrade --target=C:\Users\PREDATOR\AppData\Roaming\McNeel\Rhinoceros\7.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib --no-compile --ignore-requires-python gh-python-remote
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Collecting gh-python-remote
Using cached https://files.pythonhosted.org/packages/0b/15/757df4424310efdfff9ed0fc314a613ef76d085067ab7666be90b3895556/gh_python_remote-1.4.4-py2-none-any.whl
Collecting rpyc==4.1.5
Using cached https://files.pythonhosted.org/packages/36/a7/7898de583e17202ce02ac7ecffdbed95c72a6cebe468c1ee6fc94fc20933/rpyc-4.1.5-py2-none-any.whl
Collecting plumbum
Using cached https://files.pythonhosted.org/packages/5f/c9/67b40a607f9815275c7867f9ec60700f442c186d3cca235156cb4fa19c33/plumbum-1.8.0.tar.gz
ERROR: Exception:
Traceback (most recent call last):
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\cli\base_command.py", line 153, in _main
status = self.run(options, args)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\commands\install.py", line 382, in run
resolver.resolve(requirement_set)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\legacy_resolve.py", line 201, in resolve
self._resolve_one(requirement_set, req)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\legacy_resolve.py", line 365, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\legacy_resolve.py", line 313, in _get_abstract_dist_for
req, self.session, self.finder, self.require_hashes
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\operations\prepare.py", line 224, in prepare_linked_requirement
req, self.req_tracker, finder, self.build_isolation,
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\operations\prepare.py", line 49, in _get_prepared_distribution
abstract_dist.prepare_distribution_metadata(finder, build_isolation)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\distributions\source\legacy.py", line 34, in prepare_distribution_metadata
self.req.load_pyproject_toml()
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\req\req_install.py", line 537, in load_pyproject_toml
str(self)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_internal\pyproject.py", line 66, in load_pyproject_toml
pp_toml = pytoml.load(f)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_vendor\pytoml\parser.py", line 11, in load
return loads(fin.read(), translate=translate, object_pairs_hook=object_pairs_hook, filename=getattr(fin, 'name', repr(fin)))
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_vendor\pytoml\parser.py", line 24, in loads
ast = _p_toml(src, object_pairs_hook=object_pairs_hook)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_vendor\pytoml\parser.py", line 341, in _p_toml
s.expect_eof()
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_vendor\pytoml\parser.py", line 123, in expect_eof
return self._expect(self.consume_eof())
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\pip\_vendor\pytoml\parser.py", line 163, in _expect
raise TomlError('msg', self._pos[0], self._pos[1], self._filename)
TomlError: c:\users\predator\appdata\local\temp\pip-install-pefua3\plumbum\pyproject.toml(69, 1): msg
Traceback (most recent call last):
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\runpy.py", line 72, in _run_code
exec code in run_globals
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\site-packages\ghpythonremote\_configure_ironpython_installation.py", line 40, in <module>
subprocess.check_call(pip_cmd)
File "C:\Users\PREDATOR\anaconda3\envs\rhinoremote\lib\subprocess.py", line 190, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['C:\\Users\\PREDATOR\\anaconda3\\envs\\rhinoremote\\python.exe', '-m', 'pip', 'install', '--upgrade', '--target=C:\\Users\\PREDATOR\\AppData\\Roaming\\McNeel\\Rhinoceros\\7.0\\Plug-ins\\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\\settings\\lib', '--no-compile', '--ignore-requires-python', 'gh-python-remote']' returned non-zero exit status 2`
Also i can tell you that there is no file in: "%APPDATA%\McNeel\Rhinoceros\7.0\Plug-ins^
IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib" nor in "%APPDATA%\Grasshopper\UserObjects\gh-python-remote\examples" (but i do find them in rhinoremote env folder).
No ghpythonremote components appear, but i can drag it on from rhinoremote env folder as well (but as you can imagine, it doesn't work and outputs: Runtime error (ImportException): No module named ghpythonremote). I've tried giving the envlist path for the location input, but also doesn't work.
I really hope i'm not wasting your time with something really silly to solve, but i can't find what i'm doing wrong.
What are the installation steps for the Mac OSX environment (if ghpythonremote works there)? Thanks.
Reported here https://discourse.mcneel.com/t/solve-the-error-that-gh-pythonremote-dont-work-in-mac/125455
It appears that the get_python_from_path()
function does not manage to get to the proper python2.7 file from the file or folder passed as argument. Reported errors are:
βLocation format for /Users/xxx/anaconda3/envs/xxxx/bin/β
did not match expected format: βmethod://env_nameβ(need more than 1 values to unpack).Falling back to getting python path from MacOS $PATH."
or
βRuntime error (RuntimeException): Remote python /Users/xxx/anaconda3/envs/xxxx/bin/python failed on launch. Does the remote python have rpyc installed?β
or
"no mudule named xxx"
(From email)
import scriptcontext as sc
np = sc.sticky['numpy']
a = np.arange(10)
type(a.tolist())
returns <class '__builtin__.list'>
, but then Grasshopper says it's a IronPython.NewTypes.System.Object
, and cannot cast it to a GH list.
This is a continuation of the comment I left on the plugin page. I created rhinoremote2 virtualenv and it installed fine. No errors apart from deprecation warnings. This is the full error message when I try and run the example file (Γ changed the location to conda://rhinoremote2
)
DEBUG: ghpythonremote.connectors:
Using python executable: C:\Users\john\.conda\envs\rhinoremote2\python.exe
DEBUG: ghpythonremote.connectors:
Using rpyc_server module: C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\pythonservice.py
DEBUG: ghpythonremote.connectors:
Using port: 52348
DEBUG: ghpythonremote.connectors:
Using log_level: DEBUG
DEBUG: ghpythonremote.connectors:
Using working_dir: C:\Users\john\AppData\Roaming\Grasshopper\UserObjects\gh-python-remote\examples
INFO: ghpythonremote.connectors:
Connecting...
DEBUG: ghpythonremote.connectors:
Connecting. Timeout in 10 seconds.
Runtime error (EndOfStreamException): EOFError
Traceback:
line 55, in recv, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\channel.py"
line 100, in value, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\async_.py"
line 76, in syncreq, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
line 161, in __getattribute__, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
line 217, in _install, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\service.py"
line 213, in on_connect, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\service.py"
line 105, in _connect, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\service.py"
line 44, in connect_channel, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\factory.py"
line 56, in connect_stream, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\factory.py"
line 99, in connect, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\factory.py"
line 75, in connect, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\classic.py"
line 36, in __init__, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\connectors.py"
line 256, in read, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\stream.py"
line 374, in serve, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 47, in wait, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\async_.py"
line 455, in sync_request, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 117, in _get_connection, "C:\Users\john\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\connectors.py"
line 49, in script
Problem
I'm trying to test the CPython_to_GH.py
example with Rhino 6.0.
What happened
I installed ghpythonremote
in my conda env (python2.7, activated), and the ironpython configuration seems to be set up properly, with the console telling me the following:
> python -m ghpythonremote._configure_ironpython_installation
The gh-python-remote package will be installed in Rhino IronPython with the command:
C:\Users\harry\.conda\envs\py27\python.exe -m pip install --upgrade --target=C:\Users\harry\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib --no-binary=:all: --no-compile --ignore-requires-python gh-python-remote
...
Successfully installed gh-python-remote-1.2.1 plumbum-1.6.7 rpyc-4.1.1
INFO:Copied example files to C:\Users\harry\AppData\Roaming\Grasshopper\UserObjects\gh-python-remote
Notice that the IronPython of Rhino 6 is correctly identified above.
But if I run python CPython_to_GH.py
in the path examples
, Rhino 5 will be invoked and the following error shows up:
Well, I did python -m ghpythonremote._configure_ironpython_installation 5
as well. Before I did that, the error was simply "cannot locate module ghpythonremote
".
Am I doing anything wrong here? I feel like there should be a parameter in the PythonToGrasshopperRemote
class to let it know that we are dealing with RH5 or RH6, if both are installed in the system.
(From Food4Rhino)
Rhino starts up, but shows an error message that it cannot run the python script.
(From email)
Trying to install v1.1.1 on a computer where git isn't installed fails:
Collecting gh-python-remote Using cached gh-python-remote-1.1.1.tar.gz DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release.
Collecting rpyc>=3.4.5 (from gh-python-remote) Cloning https://github.com/pilcru/rpyc.git (to v3.4.5) to c:\users\alex\appdata\local\temp\pip-build-tzllou\rpyc
Error [Error 2]γ while executing command git clone -q https://github.com/pilcru/rpyc.git c:\users\alex\appdata\local\temp\pip-build-tzllou\rpyc Cannot find command 'git'
This is a deprecated option already in pip v9, so getting rid of it would be great and would make updating the pip dependency safer. It seems I was only using it when installing a custom build of rpyc, so maybe it's useless now.
Hello,
I have a problem while import sympy
in the GH Python through GH Python remote. The code is as below:
import rhinoscriptsyntax as rs
import scriptcontext as sc
import ghpythonremote
sp = sc.sticky['sympy']
x = sp.symbols('x')
q = sp.symbols('q', cls=Function)
Mq = sp.symbols('Mq', cls=Function)
Vq = sp.symbols('Vq', cls=Function)
diffeqbmq = Eq(Mq(x).diff(x,x), -q)
BMq = dsolve(diffeqbmq, Mq(x), ics = {Mq(0):0, Mq(l):0})
SFq = Eq(Vq(x),BMq.rhs.diff(x))
but the functions in Sympy such as Function
, Eq
, dsolve
is not usable in gh python.
it shows a warning: name 'Function' is not defined
.
Could I ask how to solve it?
(From email, food4rhino)
This happens only when using the IronPython version included in Rhino (2.7.0), adding the IronPython 2.7.5 libraries to Rhino fixes the issue. When trying to connect, fails with:
10. Runtime error (MissingMemberException): 'module' object has no attribute 'async'
11. Traceback:
line 117, in _get_connection, "C:\Users\Alex\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\connectors.py"
line 36, in __init__, "C:\Users\Alex\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\connectors.py"
line 49, in script
When the async import is fixed, fails with:
11. Runtime error (TypeErrorException): sequence item 1: expected bytes or byte array, str found
12. Traceback:
line 508, in sync_request, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 549, in root, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 100, in _connect, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\service.py"
line 70, in connect, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\classic.py"
line 117, in _get_connection, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\connectors.py"
line 49, in script
line 319, in dump, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\brine.py"
line 235, in _send, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 266, in _send_request, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 195, in on_connect, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\service.py"
line 43, in connect_channel, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\factory.py"
line 54, in connect_stream, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\factory.py"
line 93, in connect, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\factory.py"
line 36, in __init__, "C:\Users\pcuvil\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonremote\connectors.py"
Dear @pilcru,
First let me thank you for this wonderful tool that is GHPythonRemote.
I would like to know if it is possible to use Numba with it and if so, how.
Importing it doesn't seem to be an issue but adding a @jit
decorator to a function returns an error.
Example test:
nb = scriptcontext.sticky['numba']
jit = nb.jit
@jit
def f(x, y):
return x + y
f(24, 167)
Returned error:
Runtime error (Exception): NotImplementedError
Traceback:
line 58, in script
line 102, in value, "C:\Users\solub\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\async_.py"
line 458, in sync_request, "C:\Users\solub\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 76, in syncreq, "C:\Users\solub\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
line 247, in __call__, "C:\Users\solub\AppData\Roaming\McNeel\Rhinoceros\6.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
That would help in debugging versions.
The connection then returns with "result expired"
(From Food4Rhino http://www.food4rhino.com/app/gh-python-remote#comment-27766)
This breaks the ironpython installation script. Should be easy to fix by calling subprocess instead...
This should be just a matter of changing paths, although the question remains to install for both versions if possible or only one, when running python -m ghpythonremote._configure_ironpython_installation
.
Hi,
I run into this issue while trying to install gh-python-remote.
C:\Users\mag>pip install gh-python-remote --upgrade
ERROR: Could not find a version that satisfies the requirement gh-python-remote (from versions: none)
ERROR: No matching distribution found for gh-python-remote
What am I missing?
Thanks for your help!
Best,
Gian
(From email)
The code below takes 5-10 seconds to run, which is 5-10 seconds too many:
import scriptcontext as sc
np = sc.sticky['numpy']
np.array(range(10000))
The example python_to_GH.py expects a GH user component TestClusterGHPR. However, ghpythonremote._configure_ironpython_installation does not copy this file to the User Objects folder. There are also other example files which are not copied anywhere.
The component goes red when I run it. I get the following error message:
Connecting...
DEBUG: ghpythonremote.connectors:
Connecting. Timeout in 10 seconds.
Runtime error (TypeErrorException): sequence item 1: expected bytes or byte array, str found
Thanks for developing this tool, I have been looking for something like this for a long time!
Relates to #8
Maybe even show an example to some Linux machine in the cloud, with Tensorflow. If #23 is implemented, also choose good defaults for the connection stream, based on location of the server.
Running in a 2.7 environment ( conda://rhinoremote ) as directed in the guide and from a fresh anaconda3 install, I'm having problems running the GH to python remote example.
I have the following modules:
import scriptcontext as sc
scipy = sc.sticky['scipy']
numpy.linalg = sc.sticky['numpy.linalg']
numpy = sc.sticky['numpy']
I get the following error:
0. Runtime error (KeyNotFoundException): numpy
Traceback: line 3, in script
Any help/guidance would be much appreciated
thanks
anders
Part of #29 seemed to be something else than just selecting a Rhino version in CPython to GH. there is also that:
there is a bug in the example you show, I'm guessing a mismatch in exception handling settings in rpyc between the two interpreters,
which also shows up in the Rhino command line in the screenshot. Investigate...
After following the instructions:
pip install gh-python-remote --upgrade --no-binary=:all:
python -m ghpythonremote._configure_ironpython_installation
My conda console tells me:
Successfully installed gh-python-remote-1.2.1 plumbum-1.6.7 rpyc-4.1.1
...
IOError: [Errno 2] No such file or directory: 'C:\\Users\\harry\\.conda\\envs\\py27\\lib\\site-packages\\ghpythonremote\\examples\\CPython_to_GH.py'
And these are the files in my examples
folder:
It's strange that this happens since we already have these example files marked as package_data
in the setup.py
(here). Do we need to add them in the MANIFEST.in
as well?
Probably a Mac GH bug, but let's find a workaround.
(From food4rhino)
Running ghpythonremote in windows 7, GH to Python, the console window that opens remains empty. The remote traceback is lost on errors, it is not redirected to GH.
The modules about numpy, scipy, matplotlib can work successfully in ghpython.
There will be "Runtime error (SyntaxErrorException): invalid syntax" when the module about lhsmdu imported.
The module about lhsmdu can work in vscode rhinoremote.
Update:
Move to github:
Delete references:
#19 reports users with issues when rpyc 4.1.0 gets installed. Downgrading to 4.0.2 seems to work. It would be better to have something working with the latest from rpyc.
For example, trying to deliver a (remote) numpy array. Probably this does not even make sense: we shouldn't deliver something that is already on the remote. Similarly, sending b"a"
from IronPython 2 to CPython 2 won't work because it represents a call to bytes(u'a', 'latin-1')
in IronPython, that CPython has no chance of understanding since bytes == str
, which only takes one argument (no encoding).
But maybe this might hint at other issues when passing around netrefs or function calls.
>>> np = sc.sticky['numpy']
>>> rpyc.utils.classic.deliver(rpy, np.array(10))
Runtime error (Exception): TypeError
Traceback:
line 516, in sync_request, "C:\Users\pcuvil.WIN\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\protocol.py"
line 78, in syncreq, "C:\Users\pcuvil.WIN\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
line 212, in __call__, "C:\Users\pcuvil.WIN\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\core\netref.py"
line 292, in deliver, "C:\Users\pcuvil.WIN\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rpyc\utils\classic.py"
line 58, in script
--- Remote traceback: ---
Exception caught
Traceback (most recent call last):
File "c:\tools\anaconda3\envs\rhinoremote\lib\site-packages\rpyc\core\protocol.py", line 342, in _dispatch_request
res = self._HANDLERS[handler](self, *args)
File "c:\tools\anaconda3\envs\rhinoremote\lib\site-packages\rpyc\core\protocol.py", line 638, in _handle_call
return obj(*args, **dict(kwargs))
TypeError: ('loads() argument 1 must be string, not unicode', <built-in function loads>, (u"cnumpy.core.multiarray\n_rec
onstruct\np1\n(cnumpy\nndarray\np2\n(I0\ntS'b'\ntRp3\n(I1\n(tcnumpy\ndtype\np4\n(S'i4'\nI0\nI1\ntRp5\n(I3\nS'<'\nNNNI-1\
nI-1\nI0\ntbI00\nS'\\n\\x00\\x00\\x00'\ntb.",))
>>> rpyc.utils.classic.deliver(rpy, b"a")
(Same local traceback)
--- Remote traceback ---
Exception caught
Traceback (most recent call last):
File "c:\tools\anaconda3\envs\rhinoremote\lib\site-packages\rpyc\core\protocol.py", line 342, in _dispatch_request
res = self._HANDLERS[handler](self, *args)
File "c:\tools\anaconda3\envs\rhinoremote\lib\site-packages\rpyc\core\protocol.py", line 638, in _handle_call
return obj(*args, **dict(kwargs))
TypeError: ('str() takes at most 1 argument (2 given)', <type 'str'>, (u's', u'latin-1'))
Forcing casting to bytes in rpyc.utils.classic.obtain
or rpyc.core.netref.__array__
doesn't fix it.
I think 'IronPython_to_CPython.py' is missing in setup.py in 'package_data'.
Running the example python code in GH_to_CPython_test.ghx leads to a Python segmentation fault. This might be due to conda installing the wrong stuff.
conda env --name rhinoremote
doesn't create a new env as promised.
This says it's 40% faster than a localhost socket on windows, and it's now included in v4.1.0, so why not use itβ½
Hi, I can successfully add time and datetime to the modules, but once I try to type import the following script into my GHPython Script:
import scriptcontext time= scriptcontext.sticky['time'] datetime= scriptcontext.sticky['datetime']
The whole Rhino and Grasshopper crashes. Any idea why this would be happening? I also noticed that this happens when I try to import csv besides time and datetime. Meaning this doesn't happen when a GHPython Script only has time and datetime.
Hello !
I read this is only compatible for Windows.
Am I right if I say making it work under MacOS is only a question of path syntax in the "helpers.py" ?
Thanks !
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.