Add docs/tech_docs/Python-Virtual-Environments.md
This commit is contained in:
143
docs/tech_docs/Python-Virtual-Environments.md
Normal file
143
docs/tech_docs/Python-Virtual-Environments.md
Normal file
@@ -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.
|
||||
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user