Feb 16, 2023 · 2 min read
Details on the IDEs and package/dependency management tools I use when developing in Python.
I use Pluralsight, an online education platform, to help me learn skills like Python faster and to track my progress. I highly recommend signing up for free to use their Skill IQ tests to assess your proficiency in Python and receive helpful feedback on what you should focus your learning on!
NOTE: This article was inspired by my much larger article on Learn How to Program in Python.
You Need an IDE:
An Integrated Development Environment (IDE) is an important tool that you will need when learning Python. Out of the box, the language comes with IDLE, which is a small, yet usable, IDE. However, the IDE I recommend is either VS Code or Jupyter. If I am doing typical engineering work, I prefer VS Code. If I am doing data science work, I prefer using Jupyter. A powerful combination is the use of VS Code + Docker Dev Container + Jupyter Notebook together, but that explanation requires a separate article (coming soon!).
An example of using a Jupyter Notebook in VS Code
If you choose to use VS Code as your preferred IDE, these are some of the Python extensions I would recommend:
Python - Rich support for the Python language, including features such as IntelliSense (Pylance), linting, debugging, code navigation, code formatting, refactoring, variable explorer, test explorer, and more!
Pylance - A performant, feature-rich language server for Python in VS Code
Jupyter - Jupyter notebook support, interactive programming and computing that supports Intellisense, debugging and more.
Jupyter Keymap - This extension provides keymaps for notebooks in Visual Studio Code to match the keybindings in Jupyter Notebook. This extension comes with the Jupyter extension for Visual Studio Code and can be disabled or uninstalled.
Jupyter Notebook Renderers - Renderers for Jupyter Notebooks (with plotly, vega, gif, png, svg, jpeg and other such outputs)
Jupyter Notebook VS Code - Runs jupyter notebooks in VS Code
You Need Package Management:
To learn more about package management, I highly recommend watching the Pluralsight course Managing Python Packages and Virtual Environments by Reindert-Jan Ekker. You can sign up for a free Pluralsight trial here.
One of the most troublesome issues in Python development is "package management." It's been a headache for the community that has spurred the creation of a variety of helpful tools. To avoid this pesky issue, I recommend familiarizing yourself with both pip and poetry. Understanding how to use these tools will also help you further master the above modules/packages. A popular alternative worth noting is conda, which is a package manager focused on the data science community.
The Package Installer for Python, aka pip, is the standard tool for installing Python packages and comes pre-installed with all major Python versions.
You can easily install modules from pypi.org using the pip install command. You can also use a requirements.txt file to specify a list of module versions that you would like to bulk install together for a project pip install requirements.txt command.
Poetry helps you declare, manage, and install the versions and dependencies of the Python modules/packages that you need for a project. Using such a tool helps ensure that the software needed for your project can be easily passed on to colleagues and other computers that you might need to work on. You can set up poetry to manage your Python project with poetry init and install necessary module versions and dependencies for a project using poetry install and/or poetry update.
Working in Virtual Environments:
A "virtual environment" is an isolated container for using different Python versions and installing modules/packages. Using a virtual environment together with your package management tools is a powerful and important combination. Doing so helps ensure that your projects are reproducible and can stand independent from one another, avoiding dependency conflicts across your projects. My advice to you is to always work inside a virtual environment by using a popular tool called pyenv. Aternative solutions include pipenv, venv, and virtualenv.
As a side note, I also highly recommend working in Docker Dev Containers with VS Code (future article coming soon), which is another approach to virtual environments.
If you found any of my content helpful, please consider donating
using one of the following options — Anything is appreciated!