Skip to content

Commit 1ffb636

Browse files
authored
Create package_management.md
1 parent dc59e80 commit 1ffb636

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

python/package_management.md

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
1. **`distutils`**:
2+
- Relevance: Deprecated.
3+
- Purpose: Originally the standard for packaging Python modules. It's now outdated and has been officially deprecated in Python 3.10.
4+
- Action: Avoid using it in new projects.
5+
6+
2. **`setuptools`**:
7+
- Relevance: Very Relevant.
8+
- Purpose: An enhancement and extension of `distutils`. It's currently the most widely used tool for packaging and distributing Python packages.
9+
- Action: Use for traditional packaging tasks, especially if you're maintaining existing projects.
10+
11+
3. **`twine`**:
12+
- Relevance: Very Relevant.
13+
- Purpose: Utility for publishing Python packages on PyPI. It provides a safer way to upload packages compared to `setup.py upload`.
14+
- Action: Use when you want to release/distribute your package on PyPI.
15+
16+
4. **`pip`**:
17+
- Relevance: Very Relevant.
18+
- Purpose: The package installer for Python. It's the standard way to install Python packages.
19+
- Action: Use regularly for installing Python packages.
20+
21+
5. **`poetry`** (mentioned twice in your list):
22+
- Relevance: Very Relevant.
23+
- Purpose: Dependency management and packaging tool. It offers a more holistic and integrated approach to package creation, dependency management, and publishing.
24+
- Action: Consider for new projects, especially if you want integrated dependency management and packaging.
25+
26+
6. **`flit`**:
27+
- Relevance: Relevant.
28+
- Purpose: Simplified packaging, especially for pure-Python libraries. It aims to be more straightforward than `setuptools`.
29+
- Action: Consider for simpler projects, especially those without complex build processes or dependencies.
30+
31+
7. **`easy_install`**:
32+
- Relevance: Deprecated.
33+
- Purpose: Was a package installer associated with `setuptools`.
34+
- Action: Avoid using. Always prefer `pip`.
35+
36+
8. **`pipenv`**:
37+
- Relevance: Relevant.
38+
- Purpose: Offers dependency management for Python projects, aiming to bring the best of all packaging worlds to the Python world. It automatically creates and manages a virtual environment for your projects.
39+
- Action: Use if you prefer its workflow and need both package management and virtual environment management integrated.
40+
41+
9. **`conda`**:
42+
- Relevance: Very Relevant (especially in data science and scientific computing).
43+
- Purpose: An open-source package management system and environment management system. It's not limited to Python; it can package any software. It's particularly popular with data scientists using the Anaconda distribution.
44+
- Action: Use if you're working in scientific computing, need non-Python packages, or are using the Anaconda distribution.
45+
46+
To summarize:
47+
48+
- For **general package management and installation**: Use `pip`.
49+
50+
- For **traditional package creation and distribution**: Use `setuptools` and `twine`.
51+
52+
- For **modern package creation, dependency management, and integrated workflows**: Consider `poetry` or `pipenv`.
53+
54+
- For **scientific computing or non-Python package management**: Consider `conda`.
55+
56+
- Avoid deprecated tools like `distutils` and `easy_install`.

0 commit comments

Comments
 (0)