Виртуальное окружение

virtualenv

Установка virtualenv

python3 -m pip install --user virtualenv


Создание виртуальной среды

python3 -m venv env


Активация виртуальной среды

source env/bin/activate


Выход из виртуальной среды

deactivate


Установка конкретных версий

python3 -m pip install requests==2.18.4


Использование файлов требований

python -m pip install -r requirements.txt

python -m pip freeze > requirements.txt

python -m pip install -r requirements.txt


Чтобы просмотреть установленные пакеты:

python -m pip list


Чтобы перечислить устаревшие пакеты и показать последнюю доступную версию:

python -m pip list --outdated


Чтобы показать подробную информацию об установленном пакете:

python -m pip show sphinx

Pipenv - менеджер зависимостей

Установка pipenv
sudo apt install pipenv

Установка пакета 
pipenv install requests


Importing from requirements.txt
$ pipenv install -r path/to/requirements.txt

Generating a requirements.txt
pipenv lock -r> requirements.txt

pipenv shell - активация виртуального окружения; 
exit - выход из виртуального окружения; 
pipenv check - проверка на наличие уязвимостей безопасности; 

Управление пакетами: 
pipenv install - установка всех пакетов из Pipfile 
pipenv install scrapy==1.8.0 - установит фиксированную версию пакета; 
pipenv install selenium --dev - установит selenium как пакет только для разработки; 
pipenv install --system - установка зависимостей в родительскую систему; 
pipenv uninstall scrapy - удаление пакета; 
pipenv uninstall --all - удаление всех установленных пакетов в виртуальной среде; 
Pipfile.lock: 
pipenv lock - генерация Pipfile.lock 
pipenv sync - установка пакетов из Pipfile.lock 
pipenv clean - удаление из virtualenv всех пакетов, которых нет в Pipfile.lock 
Информация: 
pipenv --where - путь до текущий проект; 
pipenv --venv - путь до virtualenv; 
pipenv --py - путь до интерпретатора; 
pipenv graph - отображение графа зависимостей;

Признаки "плохого кода"

Кратко рассмотрим 12 признаков, когда код можно улучшить: 1. Duplicated Code  — иногда повторяющийся код не всегда несет в себе пользу. Выде...