116 lines
2.3 KiB
Markdown
116 lines
2.3 KiB
Markdown
# SymPy Math App
|
||
|
||
Desktop calculator and REPL for [SymPy](https://www.sympy.org/) built with PyQt5. Enter expressions and assignments in one window; results render with SymPy’s pretty printer.
|
||
|
||
## Features
|
||
|
||
- Evaluate SymPy expressions and run assignments in a persistent namespace
|
||
- Command history with **Up** / **Down** in the input field
|
||
- **Show Variables** — user-defined names only
|
||
- **Show History** — numbered list of prior commands
|
||
- **Clear** — input and results pane
|
||
|
||
## Requirements
|
||
|
||
- **Python** 3.8 or newer (recommended; matches SymPy’s supported versions)
|
||
- **pip**
|
||
|
||
| Package | Version |
|
||
| ---------- | --------- |
|
||
| PyQt5 | ≥ 5.15.0 |
|
||
| SymPy | ≥ 1.12 |
|
||
|
||
## Quick start
|
||
|
||
```bash
|
||
python -m venv venv
|
||
```
|
||
|
||
Activate the venv (see [Installation](#installation)), then:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
python main.py
|
||
```
|
||
|
||
## Installation
|
||
|
||
### 1. Create a virtual environment
|
||
|
||
**Windows**
|
||
|
||
```powershell
|
||
python -m venv venv
|
||
```
|
||
|
||
**Linux / macOS**
|
||
|
||
```bash
|
||
python3 -m venv venv
|
||
```
|
||
|
||
### 2. Activate it
|
||
|
||
**Windows (PowerShell)**
|
||
|
||
```powershell
|
||
.\venv\Scripts\Activate.ps1
|
||
```
|
||
|
||
If execution is blocked:
|
||
|
||
```powershell
|
||
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||
```
|
||
|
||
**Windows (Command Prompt)**
|
||
|
||
```cmd
|
||
venv\Scripts\activate.bat
|
||
```
|
||
|
||
**Linux / macOS**
|
||
|
||
```bash
|
||
source venv/bin/activate
|
||
```
|
||
|
||
### 3. Install dependencies
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## Usage
|
||
|
||
1. Run `python main.py`.
|
||
2. Type a SymPy command and press **Enter** or click **Evaluate**.
|
||
|
||
**Examples**
|
||
|
||
- `x = Symbol("x")` then `x**2 + 2*x + 1`
|
||
- `diff(x**2, x)` (after defining `x`)
|
||
- `integrate(sin(x), x)`
|
||
|
||
Assignments use `=`; other lines are evaluated as expressions (via `sympify` / `eval` in the SymPy namespace). **Clear** resets the input and output text only; it does not remove defined variables from the session.
|
||
|
||
Deactivate the venv when finished:
|
||
|
||
```bash
|
||
deactivate
|
||
```
|
||
|
||
## Project layout
|
||
|
||
```
|
||
math-app/
|
||
├── main.py # Application entry point
|
||
├── requirements.txt # Locked dependency ranges
|
||
├── README.md
|
||
└── venv/ # Local virtualenv (create locally; do not commit)
|
||
```
|
||
|
||
## Security note
|
||
|
||
The app evaluates user input with `exec` / `eval` in a restricted builtins context but **not** in a sandbox. Only run commands you trust.
|