pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Влияние css3 на скорость сайта и производительность ПК?

Лучший ответ: Можно начать с этой заметки и таблички csstriggers. В двух словах - важно то, какие CSS-свойства меняются, т.к. большинство из них заставляют браузер пересчитывать всю страницу, чтобы ее отрендерить. А пересчитывать реально большую страницу 60 раз в секунду - дело такое. В этом смысле если анимацию можно сделать с помощью только transform и opacity - лучше так и сделать. А можно это почти всегда.

Фильтры есть разные. Здесь CSS, SVG, что-то свое на WebGL - не важно, важен алгоритм. Если фильтр просто для каждого пикселя меняет цвет например, то он даст минимальную дополнительную нагрузку - там будет линейная зависимость количества операций от количества пикселей. А вот blur или тени уже требуют для каждого пикселя что-то считать в зависимости от соседних пикселей. Чем более сильный blur, тем больше вычислений требуется. У ноутбуков со встроенной графикой или телефонов может просто не хватать возможностей по железу и все будет тормозить. Ну и не стоит забывать, что загруженная на 99% видеокарта заставит тормозить все, даже если центральный процессор не загружен вообще.

Худший ответ: Это какой современный ПК может целиком зависать от плюшек и анимации в вэбе?
Зависимость прямая:
растровые картинки - занимают много места, но их практически не нужно рендерить - просто скачать и вывести на экран
векторные вещи - занимают мало места (набор формул), но их перед выводом приходится рендерить для показа - соответственно времени и ресурсов пользовательского ПК тратится гораздо больше.
Поэтому когда место и канал на сервере дороже (а оно всегда дороже) приходится чем-то жертвовать.
Дешевле все больше и больше работы отдавать на сторону клиента + чтобы была большая отзывчивость вся анимация сразу грузится на клиентский ПК и там на месте обрабатывается.
Вопрос: Как проверить вхождение диапазона дат в определенный диапазон?

Лучший ответ: Два временных интервала не пересекаются, если начало и конец одного из них раньше начала второго. Элементарное условие.

Худший ответ: 
ассоциативный массив, где ключи даты, значения обозначают начало это или конец интервала.
отсортировать по ключам
двигаться слева направо, следить чтобы не было два начала подряд.
Вопрос: Как запустить код в интернете? то есть что бы код не был привязан к компьютеру?

Лучший ответ: Арендовать сервер и запустить код на нём.
Если совсем без привязки к железу, то можешь попробовать какой-нибудь serverless, типа Yandex Cloud Functions или AWS Lambda

Худший ответ: один из самых популярных хостингов - Heroku
Как вариант, можно посмотреть еще и на Deta
Вопрос: Как сделать пользовательскую структуру данных в JavaScipt?

Лучший ответ: Деструктурировать-непередеструктурировать:
const makeUser = ({name, age, lang, skills}) => ({name, age, lang, skills});

const user = makeUser(getInfo());

/* {
  "name": "John",
  "age": "20",
  "lang": "en",
  "skills": ["js", "html", "css"]
} */

Худший ответ: Держи
Вопрос: Что за ошибка в linux xterm: Xt error: Can't open display: %s xterm: DISPLAY is not set?

Лучший ответ: Я предположил, что у вопроса будет тег Kali... и не ошибся! Мсье крутой хакер не в состоянии перевести сообщение? В гугле забанили? Ржунимагу...
По сути:
Xt сообщает, что программа суидная (только не спрашивай, что это такое - я еще из-под стола не вылез, убьюсь же!) или запущена под рутом, что полный текст ошибки показан быть не может - для этого нужно быть не-рутом.
xterm нельзя запускать вне графической оболочки, переменная DISPLAY как раз об этом и говорит.

Худший ответ: если вы работаете в терминале то подозреваю что графики у вас нет

проверка DIPLAY
echo $DISPLAY
будет
:0.0

проверка X server

netstat -la | grep CONNECTED| grep X

будет
unix  3      [ ]         STREAM     CONNECTED     29511    @/tmp/.X11-unix/X0

sudo lsof /tmp/.X11-unix/X0
будет

lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF  NODE NAME
Xorg    1113 root    6u  unix 0xffff8f775d282800      0t0 27173 /tmp/.X11-unix/X0 type=STREAM
Вопрос: Как правильно работать с Promise?

Лучший ответ: Вопрос если разница в таких записях?
Только в передаваемом значении:

resolve(script) передаст дальше по цепочке этот script (который никому не нужен, похоже).
script.onload = resolve передаст по цепочке объект события (тоже всем по барабану)

почему такой ее вызов дает ошибку script.onload = resolve(script);потому, что нужна функция, которую вызовут позже, а не мгновенный результат её выполнения.

Худший ответ: А теперь оцени как все это проще делается с использованием async / await:
await $.getScript('https://learn.javascript.ru/article/promise-chaining/one.js');
await $.getScript('https://learn.javascript.ru/article/promise-chaining/two.js');
await $.getScript('https://learn.javascript.ru/article/promise-chaining/three.js');
Вместо $.getScript можешь loadScript использовать, результат будет такой же - последовательная загрузка.
Вопрос: Как зашифровать мобильное устройство на Android?

Лучший ответ: Задача смысла не имеет. 

Нарушитель, который просто нашел телефон, не будет интересоваться контактами и фоточками - ему интересна сама железка. Он ее разлочит, перешьет, если надо, сбросит, если надо и на авито выставит.
Нарушитель же, которому интересны сами данные и который уже узнал/подобрал пароль - он точто так же узнает/подберет ключ расшифровки, потому что узнать/подобрать пароль брутом - маловероятно, разве только там пароль 123456, но как правило люди, которые этим озабочены, у них таких паролей не бывает.
Нарушитель просто расчехляет терморектальный криптоанализатор и узнает ключ...

Ни жена, ни сосед ни начальник не могут "узнать/подобрать" пароль, а государство не будет морочиться - у него есть Вы, который гораздо менее устойчив чем телефон...

Худший ответ: Задача смысла не имеет. 

Нарушитель, который просто нашел телефон, не будет интересоваться контактами и фоточками - ему интересна сама железка. Он ее разлочит, перешьет, если надо, сбросит, если надо и на авито выставит.
Нарушитель же, которому интересны сами данные и который уже узнал/подобрал пароль - он точто так же узнает/подберет ключ расшифровки, потому что узнать/подобрать пароль брутом - маловероятно, разве только там пароль 123456, но как правило люди, которые этим озабочены, у них таких паролей не бывает.
Нарушитель просто расчехляет терморектальный криптоанализатор и узнает ключ...

Ни жена, ни сосед ни начальник не могут "узнать/подобрать" пароль, а государство не будет морочиться - у него есть Вы, который гораздо менее устойчив чем телефон...
Вопрос: Почему полетели стили wordpress?

Лучший ответ: Плохая привычка править стили напрямую в теме.

Выход: откатиться на вчерашний бэкап на хостинге, далее - создать дочернюю тему - добавить стили в дочернюю тему, и больше не касаться родительской напрямую. 

https://misha.agency/wordpress/child-themes.html

Худший ответ: За частую бывает, что открыто несколько вкладок, когда работаешь через админку, вы могли сохранить версию без изменений, как вариант. Не раз с таким сталкивался, теперь проверяю вкладки.
Вопрос: Как вкатится во фриланс?

Лучший ответ: Никак. 
Во-первых, надо выучить ТСЯ/ТЬСЯ
А во-вторых, фриланс - это самостоятельность.
С самостоятельностью у тебя большие проблемы.
Иди на завод

Худший ответ: Жёстко и быстро
Если просто искать искать заезжай они прийдут на вторую неделю в объеме который вы сделать не можете
Вопрос: Можно ли по уровню сигнала WIFI определить местоположение в здании?

Лучший ответ: Да, но это довольно неточно.
Сигнал по разному распространяется  и часто отражается.
Если вам не нужно знать точное местоположение, а достаточно приблизительного - то вполне.

Худший ответ: Воздух одинаковый для всех. Вы можете аналогично клиенту мерить уровень сигнала клиента на сервере. Только вот вы не учли колебания уровня сигнала. Поэтому в таких зданиях обычно используются карты вместо пеленгации.
Вопрос: Как запускать бизнес-процессы по завершению задачи в Битрикс24?

Лучший ответ: Как можно привязать бизнес процесс открывающий форму к изменению состоянии задачи? И можно ли можно настроить функционал чтобы бизнес процесс отображения формы запускался только если сотрудник (юрист) укажет в задаче что она выполнена? 

Да, в самом БП в блоке где вы создаете задачу есть опция "Ожидать выполнение задачи".

Худший ответ: У юриста есть список задач часть из которых он может делать параллельно в течении нескольких дней. К каждой из этих задач добавлен бизнес процесс который открывает специальную форму по данной задаче в окне сделки, в эту форму юрист вносит нужные данные, например для задачи УВЕДОМИТЬ КЛИЕНТА ЗАКРЫТЬ ВСЕ СЧЕТА юрист вносит ссылку на скрины закрытых счетов и тд

Сейчас проблема в том что формы открываются не вовремя, еще до завершения задачи.

Это настройка или доработка, которую вам делал интегратор или кто-то из ваших сотрудников, и вы думаете, вам кто-то чужой на пальцах объяснит, как это переделать? В Битрикс24 возможно все, что вы описали, но ваш вопрос - это задание, а не вопрос.
Вопрос: Как снизить нагрузку на процессор при обращении к БД?

Лучший ответ: Сделай таски на отдельном потоке используя библиотеку Threading
https://docs.python.org/3/library/threading.html

Худший ответ: Если нагрузка на базу начинает тормозить остальное - видимо (при условии, что база нормально настроена, задействован пул коннектов, запросы оптимизированы и т. д.) пришёл час разносить их по разным контейнерам/виртуалкам.
Вопрос: Где взять офлайн установочник для gcc в убунте?

Лучший ответ: Установщиков под линуксами обычно не бывает, все ставится пакетами из репозитория.
Но нюанс в том, что один пакет компилятора ни черта не даст, нужно выкачивать к нему все зависимости.
Это в убунте может сделать, например, apt-rdepends.

Худший ответ: Можно заранее скачать репозиторий:
https://help.ubuntu.com/community/AptGet/Offline/R...
Вопрос: Как поставить задержку во время выполнения горутин?

Лучший ответ: Для таких целей есть https://pkg.go.dev/golang.org/x/time/rate

Худший ответ: У меня была похожая задача с апи Яндекса, я не использовал горутины, и задержку ставил используя time.Sleep(). Там было ограничение на 30 запросов в мин - это 1 запрос в 2 сек. Так что поставил задержку в 2 сек.
Использование горутин оправдано, когда хочешь получить информацию сразу из нескольких источников. Или одна горутина получает информацию и отдает её  на обработку другой горутине ... Тогда в этом случае нельзя использовать time.Sleep(), так как это блокирующая операция. Нужно использовать контексты или таймеры
Вопрос: Какие алгоритмы и структуры данных чаще всего спрашивают на собеседовании джуна?

Лучший ответ: Как-то я в ответ на похожие вопросы спросил собеседователя - а вам оно на кой сдалось? Кроме чего-то невнятного, что типа это проверка знаний, он ответить не смог. Большинство задающих похожие вопросы не понимают сути собеседования. И как правило вам не стоит обращать внимание на такого работодателя. Хотя - вы джун, можете попытаться набраться опыта.

Худший ответ: Да никакие, вообще не помню чтобы их спрашивали или я спрашивал, большая часть программирования все таки не завязана на написание своих алгоритмов и используют готовые решения.
Вопрос: Как чаще всего бывает на практике?

Лучший ответ: На данный момент учу php, а именно: ООП, интерфейсы и трейты. ООП, интерфейсы и трейты напрямую к пхп отношения не имеют, это общие принципы построения кода. 

Недавно узнал, что в php есть фишка рендеринга страниц (создаем метод, допустим, render() и вызывает каждый раз его, когда хотим отобразить какую либо php/html страницу). Круто, про то как происходит "рендеринг" конечно знать не надо, ну есть и есть...

В свободное время листаю вакансии php программистаНадеюсь что пока это чисто академический интерес, судя по вопросу вы не сильно тяните на, допустим, стажера...

если допустим, мне дадут по началу задачу "добавить в профиле пользователя строку с номером телефона и передавать ее в бд", на чем и через что я буду выполнять эту задачу, то ли через какой то уже готовый шаблон, то ли есть уже какая то готовая библиотека/фреймворк?На компьютере через клавиатуру будете. Возможно будет готовый шаблон (сомневаюсь что мы с вами говорим об одном и том же "шаблоне"), скорее всего это будет какой-то готовый фреймворк, и даже уже какой-то функционал на нем будет написан (но это не точно). 

Читайте как устроены современные MVC приложения на пхп, посмотрите как работают популярные фреймворки, попробуйте на них что-то базовое сделать, станет понятнее как все устроено.

Худший ответ: Сначала выучи php
Потом уже в ООП
- Переменные.
- Условия
- Массивы
- Циклы
- Как массивы перебирать и модифицировать 
Логика в реализации задач проста:
Если тебе дадут задачу и ты пришёл php разработчиком то ты её будешь решать на php.
Если ты пришёл на Laravel разработчика. ты будешь писать на php+ laravel
И тд....
Вопрос: Как заключить договор на покупку домена?

Лучший ответ: В общем случае верно, но также не помешает акт/расписка или что-то подобное о передаче/получении в зависимости от способа оплаты.

Да, если договор составлен адекватно, то есть положительная судебная практика.

Если же нет, например частая ошибка что составляется договор покупки/продажи (домен не является имуществом по законодательству РФ), а не возмездной передачи прав администрирования, то возможны различные варианты вплоть до признания его не имеющим юридической силы.

Также учитывайте риски (читай - расходы), если контрагент из другой юрисдикции и откажется от исполнения своих обязанностей.

Если есть высокие риски "кидка" - пользуйтесь услугами гаранта сделки.

P.S. Как основу для договора возмездной переуступки права администрирования  доменного имени можно взять проверенные временем шаблоны - https://reghouse.ru/upload/dogovor_vppadi.zip

Худший ответ: Первые же результаты поиска "продажа домена юрлицами" приводит:
- в консультат+ где готовая подборка документов для этого плюс статьи комментарии
- на кучку регистраторв, которые оказывают услуги гаранта (естественно за %%)

Ну и вроде на nic.ru был магазин, где он вообще выступал "промежуточным звеном" - т.е. юрлицо продаёт/передаёт nic, а тот уже продаёт от своего имени другому юрлицу
Вопрос: Как mysql/mariadb сортирует одинаковые значения?

Лучший ответ: В программировании различают понятие стабильная сортировка (stable sort) когда подряд идущие одинаковые ключи в массиве при сортировке также идут в той-же последвательности со значениями. Но это работает только для массивов.

Реляционная алгебра не определяет никаких массивов. Собственно мы не знаем порядка как хранятся кортежи в таблице. Более того. Оптимизация пространства в БД может их тасовать как колоду карт. Тот-же вакуум в Постгресе. Или работа пакетов DBMS_SPACE для Oracle. Или любое delete+insert может сломать порядок который был раньше.

Поэтому применительно к БД такой вопрос лишен смысла. Если вам нужен какой-то дополнительный ранг сортировки - вводите новое поле (sequence_num) и сортируйте по field,sequence_num.  Тогда будет порядок.

Худший ответ: Они не будут сортироваться, т.е. будут взяты, как прочитаны. Порядок при чтении зависит от движка, если говорить про InnoDB, то в нем данные сортированы по первичному ключу. Этот порядок зависит лишь от внутренних механизмов движка и не гарантируется, расчитывать на него и использовать в ПО нельзя.
Вопрос: Как отсортировать один большой массив по категориям в этом же массиве PHP?

Лучший ответ: Как-то так, например<?php
$data = [
    [
        'id' => 1,
        'parent_id' => 100,
        'name' => 'Стулья'
    ], [
        'id' => 2,
        'parent_id' => 100,
        'name' => 'Столы'
    ], [
        'id' => 5,
        'parent_id' => 1,
        'name' => 'Стул Сакура',
        'price' => 5691,
        'img' => 'lorempixel.com/900/900/?q=5',
        'props' => []
    ], [
        'id' => 9,
        'parent_id' => 2,
        'name' => 'Стол Византия',
        'price' => 5268,
        'img' => 'lorempixel.com/900/900/?q=9',
        'props' => []
    ]
];

function build_tree($data, $id) {
    $result = [];
    foreach ($data as $el) {
        if ($el['parent_id'] == $id) {
            $newEl = $el;
            $childs = build_tree($data, $el['id']);
            if (count($childs) !== 0) {
                $newEl['childs'] = $childs;
            }
            $result[] = $newEl;
        }
    }
    return $result;
}

$tree = build_tree($data, 100);
print_r($tree);

/*
Array (
  [0] => Array (
    [id] => 1
    [parent_id] => 100
    [name] => Стулья
    [childs] => Array (
      [0] => Array (
        [id] => 5
        [parent_id] => 1
        [name] => Стул Сакура
        [price] => 5691
        [img] => lorempixel.com/900/900/?q=5
        [props] => Array ()
      )
    )
  )
  [1] => Array (
    [id] => 2
    [parent_id] => 100
    [name] => Столы
    [childs] => Array (
      [0] => Array (
        [id] => 9
        [parent_id] => 2
        [name] => Стол Византия
        [price] => 5268
        [img] => lorempixel.com/900/900/?q=9
        [props] => Array ()
      )
    )
  )
)
*/

Худший ответ: пробегитесь в цикле по все элементам массива. если элемент массива обладает ключом parent_id - это товар, добавляйте его в двумерный массив result, где первым ключом будет значение parent_id. Если parent_id не установлен - это категория, сложите элемент с массивом result.

с учетом представленнового формата ответа, вот такой код:
$answer = array(
            array("id" => 1, "parent_id" => 100, "name" => "Стулья"),
            array("id" => 2, "parent_id" => 100, "name" => "Столы"),
            array("id" => 5, "parent_id" => 1, "name" => "Стул Сакура", "price" => 5691, "img" => "lorempixel.com/900/900/?q=5", "props" => array()),
            array("id" => 9, "parent_id" => 2, "name" => "Стол Византия", "price" => 5268, "img" => "lorempixel.com/900/900/?q=9","props" => array())
    );
$result = array();
foreach($answer as $item) {
    if(isset($item['price'])) $result[$item['parent_id']][] = $item;
        else $result[$item['id']] = $item;
}
var_dump($result);
Вопрос: Выдает ошибку при импорте модуля. Как поправить?

Лучший ответ: Установить модуль

Худший ответ: pip install aiogram в терминале напишите
Вопрос: Индекс в субд это по сути отдельная таблица?

Лучший ответ: Странная постановка вопроса. Как будто мы тут какие-то слухи обсуждаем. А между тем всё легко и быстро гуглится. Вот можно даже начать с википедии. Там и про бинарные сбалансированные деревья ответ есть:
https://ru.wikipedia.org/wiki/Индекс_(базы_данных)....

Вы бы хотя бы уж привели свои источники, в коих усмотрели противоречие. Иначе получился расплывчатый неконкретный вопрос, как бдто вам про БД Одна Бабка Сказала...

Худший ответ: кластеризованые и некластерризованные индексы в бд это грубо говоря отдельная служебная таблица.
Скорее всего - нет. 

Хотя кластеризация - близка к целям индексирования но я-бы сначала послушал оригинальный текст этого утверждения.  А иначе получится что мы как в том анекдоте где Рабинович напевает Шаляпина.
Вопрос: Какой можно выбрать ноутбук для игр и веб-разработки?

Лучший ответ: Конкретные модели Вам тут врят ли подскажут, 
А если в целом - берите i5(его по идее достаточно), максимально последнего поколения, видео 3060(если денег хватает), оперативки - ОТ!!! 16гб, лучше 32, ssd 512 и выше.

Худший ответ: Игры прошлых лет - это Elite, Captain Comic, Tetris, Doom, Wolfenstein 3d.
Любой современный ноут это потянет
Вопрос: Какие есть Python курсы для инженера?

Лучший ответ: Считаю, было бы отлично пройти какие-то обзорные курсы (с перспективой в будущем ухода в IT).
Для курсов - действительно отлично.
но я ценю свое время и было бы отлично найти структурированную учебную программу. 
Это называется "книга". А "специалист" не способный самостоятельно структурировать информацию - бесполезен.

Худший ответ: Я обучался здесь: it.easyum.ru/courses/python-data-science/
На этих курсах можно учиться и офлайн, и онлайн. Программа актуальная, много практических заданий было. Цены приятные. Так что загляните, может быть, понравится))
Вопрос: Теоретически возможно ли дать регулярное выражение, которое правильно принимает 29 февраля, только тогда, когда данный год действительно високосный?

Лучший ответ: Високосный год:
\d\d(?:[02468][048]|[13579][26])
проверитьhttps://regex101.com/r/I2QqNx/1

Худший ответ: c 1900 по 2100
29\.0?2\.(1904|1908|1912|1916|1920|1924|1928|1932|1936|1940|1944|1948|1952|1956|1960|1964|1968|1972|1976|1980|1984|1988|1992|1996|2000|2004|2008|2012|2016|2020|2024|2028|2032|2036|2040|2044|2048|2052|2056|2060|2064|2068|2072|2076|2080|2084|2088|2092|2096)
Если нужен более широкий диапазон дат, то вы или оптимист (2100+) или историк (1900-)
Вопрос: Как организована отрисовка ui в dos?

Лучший ответ: Насколько я помню (могу ошибаться, дело было лет так тридцать назад, в 1993 году), в досе текстовый экранный буфер находится по адресу B800:0000. Там он идет топорно просто - байт символ, байт атрибут, байт символ, байт атрибут. Атрибут - это цвет символа, цвет фона, яркость, мигание. Извращался я будь здоров, помнится.

Во даже чего нашел - структура байта атрибута! Файлик - 1995 года :)
F_BLACK  equ   0
F_BLUE   equ   1
F_GREEN  equ   2
F_CYAN   equ   3
F_RED    equ   4
F_MAG    equ   5
F_BROWN  equ   6
F_LGRAY  equ   7
F_INTENS equ   8
F_YELLOW equ  0Eh
F_WHITE  equ  0Fh
B_BLACK  equ   0
B_BLUE   equ  10h
B_GREEN  equ  20h
B_CYAN   equ  30h
B_RED    equ  40h
B_MAG    equ  50h
B_BROWN  equ  60h
B_LGRAY  equ  70h
B_BLINK  equ  80h

Худший ответ: Если я не туплю, то на скринах целиком в виде текста всё отрисовано. Только не могу понять, как имитация тени под кнопками сделана.

Шрифт везде один и он моноширный. Меняется только цвет + используются всякие символы для псевдографики (треугольники, линии и тд)
Вопрос: Как изменять прозрачность 3d объекта?

Лучший ответ: В материале, альфа канал :thinking

https://docs.unity3d.com/Manual/StandardShaderMate...

Худший ответ: В материале есть выбор типа, там есть transparent, cullof, fade и ещё что-то, вобщем выбери 2й или 3, посмотри норм ли все с отображением модельки и альфа канал заработает
Вопрос: Откликнулся на вакансию в которой набирали народ на стажировку, взяли без собеса и сразу кинули на реальный проект без наставника, что делать?

Лучший ответ: - ненормально
- радуйтесь 
- наймите втихоря ментора и платите ему часть зарплаты за консультации

Худший ответ: Кодить
Вопрос: Как сделать прогрессбар с процентами для получения ответа c json по api?

Лучший ответ: C помощью axios это довольно просто делается

https://codesandbox.io/s/axios-ondownloadprogress-...

Худший ответ: C помощью axios это довольно просто делается

https://codesandbox.io/s/axios-ondownloadprogress-...
Вопрос: Если хочу изучить C#, в каком направлении двигаться?

Лучший ответ: Хочешь изучать - изучай.
Делай хоть что-нибудь, но не задавай такие вопросы, они только раздражают

Худший ответ: В любом случае, начни с изучения синтаксиса языка. Могу посоветовать из бесплатного: metanit, ulearn.me, из платного - курс Ильи Фофанова на юдеми (по скидкеч которые там раз в в 19 дней где-то можно его купить за тысячу)
Изучение базового синтаксиса займет у тебя часов 40-80
Вопрос: Как на Python3.10 на хостинге Ubuntu импортировать модули?

Лучший ответ: А) Найди pip от питона 3.10 и запусти его явно. Например, командой pip3.10.
Б) Используй виртуальное окружение, и ставь пакеты в него. Только убедись, что используешь правильный питон для создания venv.

Худший ответ: Если у вас основная версия - 3.10, то поставьте самым первым путь к нужной версии питона в переменной окружения path.
Есть возможность также указать пипу куда устанавливать пакеты.
Также можно устанавливать пакеты локально (скачав их в виде whl файла и установив в нужное место, но это специфичное решение)
Ну и конечно же Vindicar дал отличные советы.
Также вопрос зачем вам столько версий питона?