# Python Programmers: What do you use?

**URL:** <https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820>\
**Category:** Rhino Developer\
**Tags:** windows, python\
**Created:** [May 10, 2024, 1:31pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820 "2024-05-10T13:31:47Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![keithscadservices](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/keithscadservices/32/599702_2.png) [@keithscadservices](https://discourse.mcneel.com/u/keithscadservices)\
**Post date:** [May 10, 2024, 1:31pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/1 "2024-05-10T13:31:47Z")

</div>

Curious what helps you with Rhino-specific programming and which IDE you use. Coming from C# it was pretty easy to decide, but I see that there are several options for IDE’s when programming in Python. PyCharm looks like the best (for me) but doesn’t offer much advantages for Rhino to my knowledge. I really don’t like VS Code.

Other resources like favorite books, tutorials, etc… would be helpful.

---

<div class="post-metadata">

**Author:** ![TomTom](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/tomtom/32/651939_2.png) [@TomTom](https://discourse.mcneel.com/u/TomTom)\
**Post date:** [May 10, 2024, 2:49pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/2 "2024-05-10T14:49:53Z")

</div>

Generally speaking I like PyCharm for two particular reasons: It enforces a given code-metric and it does debugging very well. However, for Rhino there is simply not a lot of benefit, because the Api violates the metric, and debugging is a bit complicated. In Rhino, I would stick to the default editor and move anything more complex in a library, if doable.  
But regarding the metrics, if you work in a team it is good if you don‘t debate over code styling too much. You just ask anyone to follow the presets as much as possible, and you get a very unified code base. A good static code analyser can also help in preventing certain types of bugs.

---

<div class="post-metadata">

**Author:** ![Patrick\_Bucher](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/patrick_bucher/32/575297_2.png) [@Patrick\_Bucher](https://discourse.mcneel.com/u/Patrick_Bucher)\
**Post date:** [May 10, 2024, 4:16pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/3 "2024-05-10T16:16:27Z")

</div>

> debugging is a bit complicated  
> But does it actually work? Can you recommend a tutorial or another instruction page? The longer I look around, the more confused I get.

---

<div class="post-metadata">

**Author:** ![spb](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/spb/32/635310_2.png) [@spb](https://discourse.mcneel.com/u/spb)\
**Post date:** [May 10, 2024, 6:35pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/4 "2024-05-10T18:35:04Z")

</div>

For Python 3, I plan on using Script Editor.

For IronPython, I’ve been using VS2015 with PTVS and Productivity Power Tools for larger projects, otherwise Rhino Python Editor.

---

<div class="post-metadata">

**Author:** ![scottd](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/scottd/32/494002_2.png) [@scottd](https://discourse.mcneel.com/u/scottd)\
**Post date:** [May 10, 2024, 8:30pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/5 "2024-05-10T20:30:01Z")

</div>

Here is some information that may help get oriented to the Script editor and Python. There is a guide below specifically about debugging in the editor.

Here is a Quick marketing overview of what’s new in 8: [Scripting Editor and Python](https://www.rhino3d.com/features/developer/scripting/)

Technical Guides with more detail:

1. [ScriptEditor Guides](https://developer.rhino3d.com/guides/scripting/)
2. [Debugging in the Script Editor Guide](https://developer.rhino3d.com/guides/scripting/scripting-command/#debugging-scripts)
3. [Rhino.Python Guides](https://developer.rhino3d.com/guides/rhinopython/)
4. [Rhino.Script with Python Guide 101](https://developer.rhino3d.com/guides/rhinopython/primer-101/)

We can also help with any questions you have about these.

---

<div class="post-metadata">

**Author:** ![keithscadservices](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/keithscadservices/32/599702_2.png) [@keithscadservices](https://discourse.mcneel.com/u/keithscadservices)\
**Post date:** [May 11, 2024, 12:40am UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/6 "2024-05-11T00:40:29Z")

</div>

There’s no Rhino extension/plugin for it? That’s a shame.

The default editor is the one that comes with Rhino? It’s the real deal I guess?

---

<div class="post-metadata">

**Author:** ![keithscadservices](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/keithscadservices/32/599702_2.png) [@keithscadservices](https://discourse.mcneel.com/u/keithscadservices)\
**Post date:** [May 11, 2024, 12:43am UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/7 "2024-05-11T00:43:56Z")

</div>

I originally started (well almost started) learning Iron Python because I stumbled across an old link. It looked really good but it’s end of service life (heard that someone is maintaining it now) and barely got much real-world use. I was a bit miffed because I spent a lot of time looking into it but noticed there was barely any resources on it compared to other stuff. Python + VS would be pretty awesome. IronPython was a .NET wrapper if I’m not mistaken? It would be worth looking into again if it ever gets revived/modernized.

---

<div class="post-metadata">

**Author:** ![eirannejad](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/eirannejad/32/477962_2.png) [@eirannejad](https://discourse.mcneel.com/u/eirannejad)\
**Post date:** [May 11, 2024, 2:53am UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/9 "2024-05-11T02:53:15Z")

</div>

@keithscadservices

You can definitely use your editor of choice outside of Rhino. An editor inside of Rhino however, provides autocompletion, debugging, and is fully aware of the Rhino and Grasshopper environments so it can make decisions (e.g. it can update your `RunScript` method signature when component parameters are changed). It can also build Rhino and Grasshopper plugins.

To provide these services in an external editor, a complicate language server is required that would be partially running over Rhino.

Let me know if you’d need more info about the Rhino built-in editor and I’d be happy to.

---

<div class="post-metadata">

**Author:** ![keithscadservices](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/keithscadservices/32/599702_2.png) [@keithscadservices](https://discourse.mcneel.com/u/keithscadservices)\
**Post date:** [May 11, 2024, 1:09pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/10 "2024-05-11T13:09:56Z")

</div>

100% going to give it a try. I’m going to create a mini-project independent of Rhino to get familiar with Python then get back to work on creating stuff for Rhino specific. Thank-you!!

---

<div class="post-metadata">

**Author:** ![scottd](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/scottd/32/494002_2.png) [@scottd](https://discourse.mcneel.com/u/scottd)\
**Post date:** [May 11, 2024, 3:49pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/11 "2024-05-11T15:49:35Z")

</div>

Split this topic on May 11, 2024, 3:49pm UTC

5 posts were split to a new topic: [Do ETO forms work in Python?](https://discourse.mcneel.com/t/do-eto-forms-work-in-python/181872)

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/emilio/32/771014_2.png) [@emilio](https://discourse.mcneel.com/u/emilio)\
**Post date:** [May 11, 2024, 9:30pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/12 "2024-05-11T21:30:24Z")

</div>

> [@keithscadservices](#):
>
> Curious what helps you with Rhino-specific programming and which IDE you use

No IDE.  
Just browsing API and samples in [https://developer.rhino3d.com/](https://developer.rhino3d.com/)  
And using the text editor I like ( Vim ), testing/debugging the script in Rhino from a button.

But I only used to write scripts for personal use. ( I’m retired )

---

<div class="post-metadata">

**Author:** ![nathanletwory](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/nathanletwory/32/482880_2.png) [@nathanletwory](https://discourse.mcneel.com/u/nathanletwory)\
**Post date:** [May 11, 2024, 9:38pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/13 "2024-05-11T21:38:35Z")

</div>

> [@emilio](#):
>
> Vim

Vim FTW

---

<div class="post-metadata">

**Author:** ![keithscadservices](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/keithscadservices/32/599702_2.png) [@keithscadservices](https://discourse.mcneel.com/u/keithscadservices)\
**Post date:** [May 12, 2024, 12:14am UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/14 "2024-05-12T00:14:14Z")

</div>

When I did C# components for Grasshopper I would use Visual Studio and copy/paste the code into Rhino… whether this was the intention or not… and whether I would get into trouble with more complex tasks… who knows.

I’m really liking PyCharm so far. Very cut and dry and good resources on how to use it. VS Code… I don’t know why but doing even the simplest things yields the most confusing tutorials and explanations I’ve ever seen. And it’s time intensive to set up. Autodesk/AutoCAD wants to switch to VS Code for AutoLISP development and thus far… I haven’t seen a good case to use it. The setup is convoluted and all said and done it doesn’t actually do everything the old IDE included with AutoCAD did.

It looks like McNeel is focusing on Python which is a big reason I’ve made the switch. A built-in IDE is a big advantage in my opinion: I still use the Built-in one with AutoCAD that must be at least 30 years old.

---

<div class="post-metadata">

**Author:** ![diff-arch](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/diff-arch/32/528268_2.png) [@diff-arch](https://discourse.mcneel.com/u/diff-arch)\
**Post date:** [May 12, 2024, 6:30am UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/15 "2024-05-12T06:30:11Z")

</div>

Generally, I use the Rhino Script Editor for small Python scripting projects, VIM (in iTerm 2) for medium size projects, and PyCharm Community (free) with IdeaVIM for huge projects that require more advanced IDE features.  
I use VIM more and more nowadays. There’s definitely a certain learning curve to it, but once you’ve internalized certain commands important to your workflow, there’s really nothing better in terms of text editing (in my opinion). I even use it in Obsidian, which is a note taking and management application. The risk with VIM is that you grow to dislike _normy_ text editors though, where you have to fiddle around with the mouse a bunch to get even the simplest things done. 😉

---

<div class="post-metadata">

**Author:** ![Dancergraham](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/dancergraham/32/497397_2.png) [@Dancergraham](https://discourse.mcneel.com/u/Dancergraham)\
**Post date:** [May 12, 2024, 8:16am UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/16 "2024-05-12T08:16:19Z")

</div>

> [@keithscadservices](#):
>
> Curious what helps you with Rhino-specific programming

Reading the rhinoscriptsyntax source code helped. I made a small tool for it, though I don’t know whether it works in Rhino 8

> [@Python : May the source be with you!](https://discourse.mcneel.com/t/python-may-the-source-be-with-you/84655):
>
> Hello everyone, I wrote a script to help me code in python and learn RhinoCommon and decided to share it with you slight_smile As you may know, the [rhinoscriptsyntax](https://developer.rhino3d.com/api/RhinoScriptSyntax/) library is written in Python and uses [rhinocommon](https://developer.rhino3d.com/api/RhinoCommon/html/R_Project_RhinoCommon.htm) functions, also in Python, under the hood. In order to look up the underlying code you can open up the full python file, you can use the inspect module or you can save the script below to your computer and run it each time you want to look up a particular function. For instance…

Reading up on C# specifics like overloaded functions helped too, so you have an advantage coming from that ecosystem

> [@keithscadservices](#):
>
> Other resources like favorite books, tutorials, etc… would be helpful

Maybe this will help. Also a favourite book for really getting the zen of Python is “Fluent Python” by Luciano Ramalho

[![](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/7/b/a/7baf81f023f75e19b27c816d55847e99e3305139.jpeg "Python for C# and .NET Developers - Talk Python to Me Ep.363") ](https://www.youtube.com/watch?v=Au-UAGvUJfs)

---

<div class="post-metadata">

**Author:** ![keithscadservices](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/keithscadservices/32/599702_2.png) [@keithscadservices](https://discourse.mcneel.com/u/keithscadservices)\
**Post date:** [May 12, 2024, 6:40pm UTC](https://discourse.mcneel.com/t/python-programmers-what-do-you-use/181820/17 "2024-05-12T18:40:23Z")

</div>

Awesome!! Thank-you.
