# Packages on Rhino

**URL:** <https://forum.compas-framework.org/t/packages-on-rhino/697>\
**Category:** compas\
**Created:** [March 28, 2023, 10:17am UTC](https://forum.compas-framework.org/t/packages-on-rhino/697 "2023-03-28T10:17:57Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![petrasvestartas](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.compas-framework.org/petrasvestartas/32/305_2.png) [@petrasvestartas](https://forum.compas-framework.org/u/petrasvestartas)\
**Post date:** [April 4, 2023, 3:17pm UTC](https://forum.compas-framework.org/t/packages-on-rhino/697/3 "2023-04-04T15:17:41Z")

</div>

> [@tomvanmele](#):
>
> if you have a package that has wrappers for C++ code, you have to make sure that the functions for working with geometry in Rhino are separated from the functions relying on C++. the former are probably needed to create input data for and visualize the results of the latter. calls to the C++ wrappers will have to be made through RPC. therefore the pure Python “Rhino code” and the “C++ wrapper code” will have to reside in different modules in your package so they can be imported independently.

I will separate the code into individual modules. I did not know about this.

* * *

> manually adding paths to the Python Module Search Paths is never needed, and will certainly not help to run C++ code directly in Rhino, since this is simply not possible.
> 
> when you create an RPC proxy, it will automatically try to reconnect to an existing server. if none is found, it will start a new one.
> 
> manually stopping and starting the server (i.e. `proxy.restart_server()` ) is only needed if you want to reload the code that is running on the server, for example after making changes…

Thank you for the explanation, now it is much clearer.

* * *

I will wait for further instructions in this thread, since I am struggling in the recent days to find a right solution:

> [@Compas.rpc -\> execution time](https://forum.compas-framework.org/t/compas-rpc-execution-time/702/6):
>
> Thank you for the answer. It is relatively small (e.g. 30 000 points) . I skipped my code just to understand where it is slowing down. This snippet summarizes it quite well considering I am transferring the point coordinates. Currently the data is modified, meaning the output array is changing including its length. def rpc\_test(): arr = np.random.rand(5000, 18) return arr the best workaround would be to use compas\_cloud instead of compas.rpc. it allows storing some of the data on …

---

_[View the full topic](https://forum.compas-framework.org/t/packages-on-rhino/697)._
