Skip to content

Intro

To become a top-tier Python programmer, it's important to master a range of tools and technologies beyond pyenv and pipenv. Here are some key areas and tools you should consider:

1. Package Management and Virtual Environments

  • virtualenv: A tool for creating isolated Python environments. Although pipenv is an alternative, knowing virtualenv is still valuable.
  • conda: A package manager and environment manager that supports multiple languages, including Python. It's commonly used in data science and machine learning.

2. Version Control

  • Git: A distributed version control system. Mastering Git, including branching, merging, and rebasing, is crucial for collaborative development.
  • GitHub/GitLab/Bitbucket: Platforms for hosting Git repositories, code reviews, and continuous integration.

3. Testing Frameworks

  • pytest: A testing framework that makes it easy to write simple and scalable test cases.
  • unittest: The built-in Python testing framework. It’s good to understand its structure as it’s widely used.
  • tox: A tool for testing across multiple Python environments.

4. Development Tools

  • black: An opinionated code formatter that helps maintain code consistency.
  • flake8: A linting tool that checks for style violations and programming errors.
  • mypy: A static type checker for Python, which helps catch type errors before runtime.

5. Build Tools

  • setuptools: A library for packaging Python projects. It’s important for distributing your Python packages.
  • wheel: A packaging format for Python that helps in building and distributing packages.

6. Dependency Management

  • poetry: An alternative to pipenv for dependency management and packaging. It simplifies managing dependencies and packaging projects.

7. Web Development Frameworks

  • Django: A high-level web framework for building robust and scalable web applications.
  • Flask: A lightweight web framework for creating simple and flexible web applications.

8. Asynchronous Programming

  • asyncio: A library for writing concurrent code using the async/await syntax.
  • aiohttp: A library for asynchronous HTTP requests.

9. Database Management

  • SQLAlchemy: An ORM (Object-Relational Mapping) library for working with databases in a Pythonic way.
  • Django ORM: The built-in ORM for Django, useful if you're working with Django projects.
  • Alembic: A lightweight database migration tool for use with SQLAlchemy.

10. APIs and Web Services

  • requests: A simple and elegant HTTP library for making API requests.
  • FastAPI: A modern, fast (high-performance) web framework for building APIs with Python 3.6+ based on standard Python type hints.

11. CI/CD Tools

  • Jenkins: An open-source automation server for building, deploying, and automating projects.
  • GitHub Actions: Integrated CI/CD workflows directly within GitHub repositories. Travis CI: A continuous integration service for building and testing code.

12. Cloud Platforms

  • AWS: Amazon Web Services for cloud computing, storage, and more. Google Cloud Platform (GCP): Cloud services from Google.
  • Azure: Microsoft’s cloud computing service.

13. Containerization and Orchestration

  • Docker: A platform for developing, shipping, and running applications inside containers.
  • Kubernetes: An orchestration platform for managing containerized applications at scale.

14. Performance and Profiling

  • cProfile: A built-in profiler to help identify performance bottlenecks in your code.
  • timeit: A module for measuring the execution time of small code snippets.

15. Documentation

  • Sphinx: A tool for generating documentation for Python projects.
  • MkDocs: A static site generator that's geared towards project documentation.

Mastering these tools and technologies will help you develop a broad skill set, making you a more effective and versatile Python programmer.


package vs package manager

The terms "package installer" and "package manager" are often used interchangeably, but they refer to slightly different concepts in the context of software and Python development. Here's a breakdown of the differences:

A package installer is a tool or utility that primarily focuses on installing, updating, and removing packages (software libraries or modules). Its main function is to handle the installation of individual packages from a repository or source.

Characteristics:
  • Primary Function: Install, upgrade, and uninstall packages.
  • Scope: Typically handles only the installation and management of packages.
  • Examples:
    • pip (Python's package installer)
    • npm (for Node.js)
    • gem (for Ruby)
pip
pip install requests

A package manager encompasses a broader set of responsibilities beyond just installing packages. It typically includes the following features:

  • Dependency Management: Manages dependencies between packages, ensuring that all required packages are installed with correct versions.
  • Environment Management: May handle creating and managing isolated environments for different projects.
  • Configuration Management: Can use configuration files (like requirements.txt, Pipfile, pyproject.toml) to define and lock dependencies.
  • Version Control: Manages different versions of packages and resolves conflicts between them.
  • Build Tools: Sometimes includes tools for building packages or projects.
  • Distribution: May provide mechanisms to publish packages to repositories.
Characteristics:
  • Primary Function: Comprehensive management of packages and their dependencies, often including environment management.
  • Scope: Handles more than just package installation, including configuration and environment management.
  • Examples:
    • conda: Manages both packages and environments; can handle non-Python packages.
    • poetry: Manages dependencies and packaging, using pyproject.toml.
    • pipenv: Combines package installation and virtual environment management, using Pipfile and Pipfile.lock.
    • pdm: Focuses on dependency management and building, using pyproject.toml.
    • hatch: Offers project management, including dependency and environment management.
conda
conda create --name myenv python=3.9
conda activate myenv
conda install numpy
Summary
  • Package Installer: Primarily deals with installing, upgrading, and removing packages. Examples include pip and npm.
  • Package Manager: Provides a more comprehensive suite of tools for managing packages and their dependencies, often including environment management, version control, and configuration. Examples include conda, poetry, and pipenv.

In essence, a package manager often includes a package installer as part of its functionality but offers additional features that make it a more holistic tool for managing software projects.


Package Manager

  • pip


    The default package installer for Python.

    Reference

  • conda


    A package manager and environment manager from the Anaconda distribution.

    Reference

  • poetry


    A dependency manager and build tool for Python projects.

    Reference

  • pipenv


    A tool that combines pip and virtualenv into one for managing dependencies and virtual environments.

    Reference