Чтобы было проще понимать, скажу, что виртуальное окружение — это “коробка”, в которую мы складываем все необходимые для проекта инструменты, например, python библиотеки. Если мы хотим, чтобы кто-то смог повторить или продолжить нашу работу, мы просто отдаем нашу “коробку” со всеми необходимыми настройками. Хочу заметить, некоторые инструменты мы можем использовать один раз, что делает нецелесообразным его хранение в локальном интерпретаторе python и мы его храним отдельно в виртуальном окружении, не засоряя локальный интерпретатор.
В целом неплохо а для Unix систем есть такая статья?
Возможно вам помогут следующие статьи:
- для Ubuntu 18.04: https://netpoint-dc.com/blog/python-venv-ubuntu-1804/
- для Ubuntu 20.04: https://setiwik.ru/kak-sozdat-virtualnuju-sredu-python-3-na-ubuntu-20-04/
- для настройки в PyCharm: https://habr.com/ru/post/491916/