diff --git a/docs/tech_docs/Python-Virtual-Environments.md b/docs/tech_docs/Python-Virtual-Environments.md new file mode 100644 index 0000000..16ba149 --- /dev/null +++ b/docs/tech_docs/Python-Virtual-Environments.md @@ -0,0 +1,143 @@ +# `venv` User Guide for Python Virtual Environments + +The `venv` module, included in Python 3, is used for creating isolated Python environments. This guide provides instructions on creating and managing virtual environments with `venv`. + +## Creating Virtual Environments + +### Creating the First Environment + +1. **Navigate to your project directory:** + ```bash + cd path/to/your/project + ``` + +2. **Create a virtual environment named `env1`:** + ```bash + python3 -m venv env1 + ``` + +3. **Activate the environment:** + - On Windows: + ```bash + .\env1\Scripts\activate + ``` + - On Unix or MacOS: + ```bash + source env1/bin/activate + ``` + +### Creating the Second Environment + +1. **Create another environment named `env2`:** + ```bash + python3 -m venv env2 + ``` + +2. **Activate the environment as shown previously.** + +## Best Practices + +### Activating and Deactivating Environments + +- **Activate** an environment before working on the project. +- **Deactivate** when done. Just type `deactivate` in the terminal. + +### Managing Dependencies + +- **Install packages** using `pip` while the environment is activated. +- **Create a `requirements.txt`** file to keep track of your dependencies. + ```bash + pip freeze > requirements.txt + ``` +- **Install dependencies** from the file in a new environment: + ```bash + pip install -r requirements.txt + ``` + +### Keeping Environments Separate + +- **Do not commit the environment** folder to version control. Add it to `.gitignore`. +- **Commit `requirements.txt`** to ensure consistency across different setups. + +### Updating the Python Version + +- If you need to update Python, create a **new environment** with the updated version. +- Reinstall your dependencies in the new environment from `requirements.txt`. + +## Example Workflow + +1. **Activate the environment** when starting work. +2. **Install and update packages** as needed. +3. **Regularly update `requirements.txt`** to reflect new dependencies. +4. **Deactivate the environment** when done. + +By following these practices, you can maintain a clean and consistent development environment for your Python projects using `venv`. + +--- + +# Guide to Python Virtual Environments + +Python virtual environments are essential tools for managing project-specific dependencies and Python versions. This guide covers three popular tools: `virtualenv`, `venv`, and `conda`. + +## 1. virtualenv + +### Description +`virtualenv` is a widely-used tool for creating isolated Python environments. It supports both Python 2 and 3 and allows different environments to have different versions of Python and packages. + +### Pros +- Compatible with Python 2 and 3. +- Creates environments with different Python versions. +- Well-documented and widely used. + +### Cons +- More complex than `venv`. +- Requires installation as it's not part of the standard library. + +### Best for +Developers working on multiple projects with varying dependencies, especially if Python 2 support is needed. + +## 2. venv + +### Description +`venv` is a module in Python 3 (3.3 and newer) for creating virtual environments, offering a streamlined approach compared to `virtualenv`. + +### Pros +- Part of the Python standard library (no extra installation). +- Simpler than `virtualenv`. +- Good for Python 3 projects. + +### Cons +- Only for Python 3. +- Less flexibility in Python version management compared to `virtualenv`. + +### Best for +Python 3 projects where simplicity and ease of use are key, without the need for Python 2. + +## 3. conda + +### Description +`conda` is a package and environment management system that supports multiple languages. It's especially popular in data science for managing complex dependencies. + +### Pros +- Manages both Python and non-Python packages. +- Ideal for complex, multi-language projects. +- Widely used in data science and machine learning. + +### Cons +- More complex than `venv` and `virtualenv`. +- Overkill for simple Python-only projects. + +### Best for +Complex projects involving data science, machine learning, or multiple programming languages. + +## Choosing the Right Tool + +- **Project Complexity**: Use `venv` for simple projects, `virtualenv` for medium complexity, and `conda` for complex, multi-language projects. +- **Ease of Use**: `venv` for straightforward Python 3 projects, `virtualenv` for more control, and `conda` for complex dependency management. +- **Cross-Language Support**: Choose `conda` for projects requiring multi-language support. +- **Community and Documentation**: All three have strong communities and documentation. Choose based on project needs. + +In summary, your choice depends on the project's requirements, complexity, and language support. `venv` is suitable for most Python 3 projects, while `virtualenv` and `conda` cater to more complex scenarios. + + +--- \ No newline at end of file