git clone https://github.com/ethanchewy/PythonBuddy.git
python3 -m venv venv
If you don't use Python Python 3.7.6, some Python libraries that PythonBuddy relies on may not work. Please refer to this documentation for figuring out how to create a specific version of Python via virtualenv via this StackOverflow post.
pip install -r requirements.txt
Open your browser to localhost:5000 . Voila! 🎉
This builds off of christophetd's docker-python-sandbox and just modifies it so that it runs pylint in the background and processes the pylint messages on the client side.
To see how he implements it on the web side, please check out https://github.com/christophetd/code-execution-api-demo
This is still in alpha stage so there might be some bugs. If you want to implement this please check the 4 links above since documentation is a WIP.
To run tests, run this at the root directory:
For coverage run the following command in the root directory:
pytest --cov-report html --cov=PythonBuddy tests/
Why did you make this?
In 2014, I was a Community TA at MIT edX 6.00.1x course where I helped teach over 1000 students. The year after I started researching under Prof. Eni Mustafaraj. She had a data set from that course and we saw a high attrition rate of students within the first 2 weeks. After digging through the curriculum and data, I realized that the students left because of difficulties setting up their Python environment and complex error messages that they couldn't solve when running their code (ex: some students had path issues).
So, I created PythonBuddy to address this issue so that students wouldn't have to go through the frustrations of setting up a Python environment and running into seemingly "random" bugs. PythonBuddy allows users to jump right into Python programming with the support of live syntax checking & highlighting. Also, professors and teachers could easily set up a server and allow students to quickly test out their code with PythonBuddy online.
Has anyone created anything like this before?
There has never been a live syntax checker for python online. Similar projects that are not "live" are http://pep8online.com/ and http://antares.sip.ucm.es/cesar/pylint/
How can I contribute?
You can 🌟 star my repo, fork my repo, submit a pull request, and/or open issues!
Where's the code for embedding it in MOOCs?
I'm currently working on this over here (for edx specifically): https://github.com/ethanchewy/pybuddy2.0 . If you want to embed this project directly to your site, you would use an iframe:
I want the code to actually compile and run in a certain way?
To run PythonBuddy securely, you can check out my implementation of PythonBuddy with Docker and Node.js: https://github.com/ethanchewy/PythonBuddy#secure-sandboxed-version-using-docker. Basically, it dockerizes each user session (similar to creating a virtual machine for each user) and destroys it if it uses too much memory or runs malicious code.
If you want to actually execute the python in a restricted fashion at my Restricted Python branch: https://github.com/ethanchewy/PythonBuddy/tree/restrictedpython.
How do I run my own server?
This was made by Ethan Chiu as a research project under the guidance of Wellesley College professor Eni Mustafaraj.
As of October 2020, PythonBuddy.com will no longer be a demo server for this open-source project due to the increasing costs of hosting it for 80,000+ people monthly. Instead, this URL will redirect back to this GitHub repo.
If you enjoyed using this open-source project, please consider donating whatever you can to these organizations that address problems I'm passionate about:
If you don't have the means to donate to the above, consider checking out some of these free action items and information: