{"id":13595042,"url":"https://github.com/donkirkby/live-py-plugin","last_synced_at":"2026-02-10T08:02:13.811Z","repository":{"id":3291087,"uuid":"4332096","full_name":"donkirkby/live-py-plugin","owner":"donkirkby","description":"Live coding in Python with PyCharm, Emacs, Sublime Text, or even a browser","archived":false,"fork":false,"pushed_at":"2025-04-05T16:26:03.000Z","size":141666,"stargazers_count":296,"open_issues_count":46,"forks_count":58,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-07T03:08:01.059Z","etag":null,"topics":["emacs","emacs-mode","gnu-emacs","live-coding","livecode","livecoding","pycharm","pycharm-plugin","python","sublime-text"],"latest_commit_sha":null,"homepage":"https://donkirkby.github.io/live-py-plugin","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/donkirkby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"license.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-05-15T04:41:18.000Z","updated_at":"2025-04-05T16:26:00.000Z","dependencies_parsed_at":"2023-10-15T04:36:48.243Z","dependency_job_id":"0ebd9daa-1e5f-468d-b518-bda3388670e2","html_url":"https://github.com/donkirkby/live-py-plugin","commit_stats":{"total_commits":1208,"total_committers":25,"mean_commits":48.32,"dds":0.2847682119205298,"last_synced_commit":"e41e753a1b2b49b0e75d1ed97dbcf978f579fedd"},"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/donkirkby%2Flive-py-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/donkirkby%2Flive-py-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/donkirkby%2Flive-py-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/donkirkby%2Flive-py-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/donkirkby","download_url":"https://codeload.github.com/donkirkby/live-py-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248870836,"owners_count":21175112,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emacs","emacs-mode","gnu-emacs","live-coding","livecode","livecoding","pycharm","pycharm-plugin","python","sublime-text"],"created_at":"2024-08-01T16:01:42.947Z","updated_at":"2026-02-10T08:02:13.735Z","avatar_url":"https://github.com/donkirkby.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"Live Coding in Python\n=====================\n\n[![Python Build Status]][actions]\n[![HTML Build Status]][actions]\n[![Code Coverage]][codecov]\n[![OpenSSF Best Practices]][openssf]\n[![PyCharm downloads]][pycharm plugin]\n[![Emacs downloads]][emacs plugin]\n[![Sublime downloads]][sublime plugin]\n[![space-tracer downloads]][space-tracer]\n[![Supported Python versions]][space-tracer]\n[![DOI]][zenodo]\n\nVisualize your Python code while you type it in PyCharm, Emacs, Sublime Text, or\neven your browser.\n\n[Python Build Status]: https://github.com/donkirkby/live-py-plugin/actions/workflows/py-build.yml/badge.svg?branch=master\n[HTML Build Status]: https://github.com/donkirkby/live-py-plugin/actions/workflows/html-build.yml/badge.svg?branch=master\n[actions]: https://github.com/donkirkby/live-py-plugin/actions\n[Code Coverage]: https://codecov.io/gh/donkirkby/live-py-plugin/coverage.svg\n[codecov]: https://app.codecov.io/gh/donkirkby/live-py-plugin\n[OpenSSF Best Practices]: https://bestpractices.coreinfrastructure.org/projects/7182/badge\n[openssf]: https://bestpractices.coreinfrastructure.org/projects/7182\n[PyCharm downloads]: https://img.shields.io/jetbrains/plugin/d/9742?label=PyCharm%20%E2%86%93\n[pycharm plugin]: https://plugins.jetbrains.com/plugin/9742\n[Emacs downloads]: https://img.shields.io/badge/Emacs%20%E2%86%93-432k-brightgreen\n[emacs plugin]: https://melpa.org/#/live-py-mode\n[Sublime downloads]: https://img.shields.io/packagecontrol/dt/Live%20Coding%20in%20Python?label=Sublime%20%E2%86%93\n[sublime plugin]: https://packagecontrol.io/packages/Live%20Coding%20in%20Python\n[space-tracer downloads]: https://static.pepy.tech/personalized-badge/space-tracer?left_color=grey\u0026right_color=brightgreen\u0026left_text=space-tracer%20%E2%86%93\u0026period=total\n[space-tracer]: https://pypi.org/project/space-tracer/\n[Supported Python versions]: https://img.shields.io/pypi/pyversions/space-tracer.svg\n[DOI]: https://zenodo.org/badge/4332096.svg\n[zenodo]: https://zenodo.org/badge/latestdoi/4332096\n\nLive coding tightens the feedback loop between making a change to your code\nand seeing the behaviour change. As you type your code, it will run over and\nover, showing a visualization of the program state, a matplotlib graph, a\nPillow image, or turtle graphics. If you make a mistake, you'll immediately see\nthe problem and where it went wrong.\n\nTo see how to use one of the Live Coding in Python plugins, watch the\n[demo video][video] or read the getting started pages for [PyCharm], [Emacs],\nor [Sublime Text]. Want to try it without installing anything? Try the\n[browser version]. You can also try [Space Tracer], the command-line tool that\ntrades time for space when you debug. You might also find some useful examples\nin the [tools folder][tools]. To learn more, read about [how it works][how].\n\n![Screenshot of a star diagram][screenshot]\n\nSpecial thanks to [James Davies] for contributing the Sublime Text support,\nto [Antti Kaihola][akaihola] and [Christoph Paulik][cpaulik] for\ncontributing the Emacs support, and to [Brecht Willems] for the idea of flag\ntutorials. Thanks to [all the contributors][hatrack] for\nhelping in all kinds of ways, and thanks to [JetBrains] for the free PyCharm and\nIDEA licenses.\n\nIf you like this project, check out some of my [other projects][projects].\n\n[how]: http://donkirkby.github.io/live-py-plugin/howitworks.html\n[screenshot]: https://donkirkby.github.io/live-py-plugin/images/demo_star.png\n[akaihola]: https://github.com/akaihola\n[cpaulik]: https://github.com/cpaulik\n[JetBrains]: https://www.jetbrains.com/?from=live-py-plugin\n[browser version]: https://donkirkby.github.io/live-py-plugin/demo/\n[PyCharm]: https://donkirkby.github.io/live-py-plugin/starting_pycharm.html\n[Emacs]: https://donkirkby.github.io/live-py-plugin/starting_emacs.html\n[Sublime Text]: https://donkirkby.github.io/live-py-plugin/starting_sublime_text.html\n[Space Tracer]: https://donkirkby.github.io/live-py-plugin/space_tracer.html\n[James Davies]: https://github.com/Derfies\n[Brecht Willems]: https://github.com/BTWS2\n\nFeature Comparison\n------------------\nSo far, the Emacs mode seems to be the most popular way to use live coding in\nPython, and the PyCharm plugin has the most features. The browser version might\nbe the best for students, because it has tutorials and doesn't need to be\ninstalled.\n\n\n| Feature              | PyCharm |  Emacs  | Sublime | browser | space_tracer |\n| -------------------- | ------- | ------- | ------- | ------- | ------------ |\n| variable assignments |    Y    |    Y    |    Y    |    Y    |       Y      |\n| looping              |    Y    |    Y    |    Y    |    Y    |       Y      |\n| function calls       |    Y    |    Y    |    Y    |    Y    |       Y      |\n| errors and exceptions|    Y    |    Y    |    Y    |    Y    |       Y      |\n| print function       |    Y    |    Y    |    Y    |    Y    |       Y      |\n| unit tests           |    Y    |    Y    |    Y    |         |       Y      |\n| turtle graphics      |    Y    |         |         |    Y    |              |\n| matplotlib preview   |    Y    |         |    Y    |         |              |\n| pyglet preview       |    Y    |         |    Y    |         |              |\n| tutorials and goals  |         |         |         |    Y    |              |\n\nIf you find the project useful, help us [make it better][contributing].\n\n\nInstalling the PyCharm plugin\n-----------------------------\nThis assumes you already have [PyCharm] installed, you have configured a\nPython interpreter, and you can run a Python script normally.\n\n1. From the File menu, choose Settings....\n2. Click on the Plugins section.\n3. Click the Browse Repositories... button.\n4. Type live coding in the search box, and click on the \"Live Coding in Python\"\n   entry in the list below.\n5. Click the green Install button on the right.\n6. Click the Restart PyCharm button.\n7. Close all the dialog boxes by clicking OK, then let PyCharm restart when it\n   asks.\n8. Open a Python file.\n9. Run the Python file normally, as a script or a unit test.\n10. With the same run configuration selected in the drop down, choose Start\n    Live Coding from the Run menu.\n\nUninstalling the PyCharm plugin\n-------------------------------\n1. From the File menu, choose Settings....\n2. Click on the Plugins section.\n3. In the list of plugins, click on Live Coding in Python.\n4. Click the Uninstall button on the right.\n5. Click the Restart PyCharm button.\n6. Close all the dialog boxes by clicking OK, then let PyCharm restart.\n\nInstalling the Emacs mode\n-------------------------\nIt's probably easiest to use the MELPA package archive, as described in this\nsection, but the next section gives instructions for installing without MELPA.\n\n1. [Install GNU Emacs] if you don't already have it.\n2. [Install MELPA][melpa]. You probably want to follow the instructions\n   for the stable version, instead of the default bleeding-edge version.\n3. Launch the package installer with `M-x package-list-packages`.\n4. Find the package with `C-s live-py-mode`. If you can't find it, run\n   `M-x package-refresh-contents`, and try again.\n5. Mark the package to install with `i`, then execute the installation with\n   `x`.\n6. Open any Python file, and activate live-py-mode with `M-x live-py-mode`.\n   You should see an extra window on the right that shows the results of running\n   your code.\n7. Type `C-h m` and scroll down to the **Live-Py** section to see all the\n   advanced features that let you run other versions of Python or drive your\n   live coding from another script or a unit test.\n\n[melpa]: https://melpa.org/#/getting-started\n\nInstalling the Emacs mode without MELPA\n---------------------------------------\n1. [Install GNU Emacs] if you don't already have it.\n2. Clone the latest version of the live-py Emacs mode:\n\n        git clone https://github.com/donkirkby/live-py-plugin.git\n\n3. Copy the Emacs Lisp file and the supporting Python files into a directory\n   which is in your Emacs `load-path`. For example:\n\n        cd live-py-plugin\n        mkdir -p ~/.emacs.d/packages\n        cp emacs-live-py-mode/live-py-mode.el plugin/PySrc/space_tracer ~/.emacs.d/packages\n\n   Add ~/.emacs.d/ to your `load-path` in `~/.emacs.d/init.el` or `~/.emacs`:\n\n        (add-to-list 'load-path \"~/.emacs.d/packages\")\n4. Load the Lisp library in your `~/.emacs.d/init.el` or `~/.emacs`:\n\n        (require 'live-py-mode)\n5. Restart Emacs.\n6. Open any Python file, and activate live-py-mode with `M-x live-py-mode`.\n   You should see an extra window on the right that shows the results of running\n   your code.\n7. Type `C-h m` and scroll down to the **Live-Py** section to see all the\n    advanced features that let you run other versions of Python or drive your\n    live coding from another script or a unit test.\n\nUninstalling the Emacs mode\n---------------------------\nIf you installed with MELPA, just use it to uninstall. If not, follow these\nsteps:\n\n1. Remove the files you copied into `~/.emacs.d/`:\n2. Revert additions to `~/.emacs.d/init.el` or `~/.emacs`.\n3. Restart Emacs.\n\nInstalling the Sublime Text plugin\n----------------------------------\nIt's easiest to install from package control, but you can find a manual method\nin the CONTRIBUTING file.\n\n1. Install [package control].\n2. Open the command palette by typing\n    \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eP\u003c/kbd\u003e.\n3. Type \"Package\" and then select Package Control: Install Package.\n4. Start typing \"Live Coding in Python\" and select it when it appears in the\n    list.\n5. When it finishes installing, you should see a new \"Live Coding\" menu.\n6. Live coding should now work for simple scripts.\n7. Navigate to Preferences -\u003e Package settings -\u003e Live Coding.\n8. Set the path to your preferred Python executable, particularly if you want to\n    use a virtual environment. The default is `python`.\n9. Save and close this pane.\n10. Open or create a Python file.\n11. Navigate to Live Coding -\u003e Start\n12. This should bring up a new pane on the right with the live coding display.\n13. Begin typing in the left pane and see the code trace results on the right.\n\n[package control]: https://packagecontrol.io/installation\n\nUninstalling the Sublime Text plugin\n------------------------------------\n\n1. Open Sublime Text 3.\n2. Open the command palette by typing\n    \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eP\u003c/kbd\u003e.\n3. Type \"Package\" and then select Package Control: Remove Package.\n4. Start typing \"Live Coding in Python\" and select it when it appears in the\n    list.\n\n[video]: https://www.youtube.com/watch?v=Vdr2l3yNFH4\n[Install GNU Emacs]: http://www.gnu.org/software/emacs/\n[tools]: https://github.com/donkirkby/live-py-plugin/tree/master/test/PySrc/tools\n[projects]: https://donkirkby.github.io/\n[contributing]: https://github.com/donkirkby/live-py-plugin/blob/master/CONTRIBUTING.md\n[hatrack]: https://labhr.github.io/hatrack/#repo=donkirkby/live-py-plugin\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonkirkby%2Flive-py-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdonkirkby%2Flive-py-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonkirkby%2Flive-py-plugin/lists"}