This page was originally made to host data from this paper, that presented an earlier version of the table below:
VILLARES, A. B. A., & MOREIRA, D. (2017). Python on the Landscape of Programming Tools for Design and Architectural Education. Presented at the SIGRADI 2017, Concepcíon, Chile.
SORTABLE VIEW OF THE TABLE| CSV on GitHub | raw CSV
About the table contents: (inclusion criteria)
- Drawing or 3D modeling software that embeds a scripting language on the user interface or allows automation with a very limited number of steps between programming and code execution.
- Tools aimed at teaching programming in a visual or graphic context.
- [Ad hoc: tools that have shown potential for teaching in a visual or graphic context.]
After updating a few times the data from the earlier table, work started on compiling the other tables below.
Name | Processing features | based on (& Python version) | Python standard library | libraries ecosystem | main features | main limitations |
---|---|---|---|---|---|---|
Processing Python Mode (the "reference implementation" for comparison) | Processing 3 Java | Jython (Python 2) | complete | Java & Processing Java | Available inside Processing IDE, very Processing 3 compatible | no web sharing/deployment, no modern Python 3 libs, not working with Processing 4, needs a new maintainer |
py5✱ | Processing 4 Java graphics via JPype | Python 3 | complete | Python & Processing Java | truly Python 3 compatible for libraries, can be used on Jupyter notebooks, same core capabilities as Processing 4 Java | New snake_case names, experimental, maybe some Processing Java libraries might not work |
p5py | a new inplementation based on OpenGL (incomplete), and will add Skia backend | Python 3 | complete | Python only | truly Python compatible, no Java/JVM dependency | New snake_case names, experimental, still incomplete, no access to Processing Java libraries |
pyp5js✱ (pyodide or transcrypt mode) | p5.js | Python 3 via Pyodide or Transcrypt | complete | Python, JavaScript & p5.js | web ready sketches & editor, very p5.js compatible & pyodide makes it very Python compatible | Experimental, still incomplete, p5.js features (as opposed to Processing Java/Python modes) |
Proceso | p5.js | Python 3 via Pyodide | complete | Python, JavaScript & p5.js | browser based sketches & very p5.js compatible, Python compatible,, names similar to py5 | p5.js features (as opposed to Processing Java/Python modes) |
SkulptIDE and trinket.io | ProcessingJS | Skulpt (Python 2, going to 3 now) | partial | unknown, possibly JavaScript | very nice web IDE, browser based sketches | ProcessingJS is defunct; not extensible |
BrythonIDE and p5py.com | p5.js | Brython (Python 3) | fairly complete | JavaScript & p5.js | browser IDE, browser based sketches & very p5.js compatible | p5.js features (as opposed to Processing Java/Python modes) |
✱ these are the ones I'm using most!
- FreeCAD — Your own 3D parametric modeler
- It has great a Python interactive console, bult-in editor (macro panel) and can also be used for 2D
- Blender — Blender's Python API
- Ursina — A 3D game engine based on the Panda3D framework
- trimesh — A Python library to work with 3D meshes. Can be used on Jupyter Notebooks and integrates well with py5
- CADQuery & CQ-Editor — A Python parametric CAD scripting framework
- PyPlasm — Python version of the PLASM 3D modeling functional language
- VPython — A 3D programming environment for Python
- sdfCAD — A Python library to generate 3D meshes based on SDFs (Signed Distance Functions)
- OpenSCAD + Python tools:
- ShoeBot — A great creative coding environment designed for making vector graphics and animations
- Related to the DrawBot/NodeBox1/PlotDevice family of tools. See also drawbot-skia (a new implemetation of DrawBot)
- pyxel — A retro game engine for Python.
- pygame-zero — A zero-boilerplate games programming framework for Python 3, based on Pygame.
- guizero — A really easy Python GUI library (based on Tkinter).
- Bezmerizing — Allison Parrish's wonderful tiny library.
- based on Flat — Generative infrastructure for Python.
- PageBot — Scriptable page layout, vector graphics and typography environment.
- Pero — A unified Python API for multiple drawing backends.
- generativepy — Generative art and graphing library based on PyCairo.
- vsketch — A plotter-centric Python generative art toolkit.
- How to install and start using py5
- The py5 tutorial series: intro to py5 and python
- Tristan Bunn's Learn Pyhon Visually and other wonderful resources, including Processing.py in Ten Lessons and the thonny-py5mode plugin EN
- Allen Downey's Think Python 2e EN / Pense em Python 2e PT
- Al Sweigart's Automate the Boring Stuff and many other open resources EN
- Jake VanderPlas' Whirlwind Tour of Python EN
- My own open resources for teaching, in Portuguese Introdução à programação com Python em um contexto visual PT
Please consider feedback, colaboration by means of pull requests, and/or a small donation!
Copyright (c) 2014-2023 Alexandre B A Villares. This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. CC-BY-SA-4.0 License