to manage project dependencies in an isolated manner. You can have a project that uses Django 1.0 and another project that uses Django 2.0. The former project uses Python 2 and the latter Python 3. With virtual environments they don’t interfere which each other. Updates may introduce changes that break your application. Maybe your favourite package doesn’t support the new release or your own custom code is not ready for the upgrade. But at the same time you might want to start another project using the new Django release. This is where virtual environments come in handy. Keeping all project packages in one place also makes it easier to deploy. We can generate a requirements list and use it to install the dependencies on another environment.