Куда устанавливаются библиотеки python windows

Пройдите тест, узнайте какой профессии подходите

Часто при использовании инструмента для установки пакетов Python, pip, возникает вопрос о том, где именно устанавливаются загруженные пакеты. В частности,

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Часто при использовании инструмента для установки пакетов Python, pip, возникает вопрос о том, где именно устанавливаются загруженные пакеты. В частности, это становится актуальным, когда пользователь работает с виртуальным окружением, созданным с помощью инструмента virtualenv.

Допустим, была выполнена команда:

pip install requests

Эта команда устанавливает пакет «requests» с помощью pip. Но где именно он устанавливается? В какой директории его можно найти?

Пакеты, установленные с помощью pip, обычно устанавливаются в директории, где установлен Python. Они располагаются в поддиректории «site-packages».

Если установка происходит в виртуальном окружении, то пакеты устанавливаются в директорию этого виртуального окружения. Снова, они будут находиться в поддиректории «site-packages».

Таким образом, если, например, используется виртуальное окружение, созданное в директории «myenv», то пакеты будут установлены в директории «myenv/lib/pythonX.Y/site-packages», где «X.Y» — это версия Python, используемая в виртуальном окружении.

Если же Python и pip установлены глобально, то пакеты будут установлены в директории «lib/pythonX.Y/site-packages» в директории установки Python.

В любом случае, для того чтобы узнать точное местоположение установленного пакета, можно воспользоваться модулем «site» в Python. Следующая команда выведет список всех директорий, где pip ищет пакеты:

python -m site

Также можно использовать следующую команду для вывода директории установки конкретного пакета:

python -c "import package; print(package.__path__)"

Здесь «package» — это имя установленного пакета.

Итак, теперь стало ясно, где pip устанавливает пакеты и как найти их местоположение.

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

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

Большинство библиотек не подключены к языку программирования по умолчанию. Их нужно загружать отдельно. Разберемся, как сделать это в Python — одном из самых популярных языков программирования.

Способ №1. Установить библиотеку вручную

Большинство пакетов с библиотеками Python собрано на сайте под названием PyPI. На его главной странице есть окно поиска, через которое можно найти интересующий пакет. А затем открыть его страницу и увидеть информацию по нему.

Сайт предлагает скачать и установить любой пакет двумя способами:

  • с помощью команды пакетного менеджера pip;
  • вручную — для этого нужно скачать архив с библиотекой с сайта PyPI. 

После того как файл загрузится на компьютер, его нужно будет разархивировать. А затем — открыть консоль командной строки и перейти в папку, где лежит пакет. Там в терминале нужно будет выполнить команду:

python setup.py install

Эта команда с помощью Python запускает файл setup.py — в пакете он отвечает за установку компонентов.

Если возникает ошибка — скорее всего дело в том, что командная строка не понимает, где находится Python. В таком случае можно прописать полный путь к папке, где находятся файлы языка.

Способ №2. Использовать easy install

Для Python существует модуль под названием easy install. Он позволяет быстро устанавливать в язык новые расширения — понадобится всего лишь написать одну команду. Скачать этот модуль проще всего вместе с расширением setuptools — оно есть на PyPI, и его можно установить вручную способом из предыдущего пункта.

После того как утилита установится, можно будет загрузить библиотеку в Python через нее. Для этого нужно из папки, где установлен setuptools, вызвать в терминале команду:

easy_install <имя пакета>

Вместо <имя пакета> нужно подставить название интересующей библиотеки, которое можно посмотреть на PyPI или ее официальном сайте. Инструмент скачает и установит библиотеку автоматически.

Пользоваться easy install можно и из других папок — но понадобится прописывать полный путь к утилите. Правда, если установить ее в корневой каталог операционной системы, это делать не понадобится — ОС будет «видеть» утилиту, из какой бы папки ее ни вызвали.

У easy install есть два ограничения:

  • с ее помощью нельзя удалить какую-то библиотеку или отключить ее;
  • иногда при использовании возникают ошибки — она может попытаться запустить не установленную на компьютер библиотеку.

Способ №3. Использовать pip

Это самый популярный способ установки библиотек в Python. Для языка существует менеджер пакетов под названием pip. С его помощью устанавливать новые компоненты можно буквально с помощью одной команды.

Начиная с Python версии 3.4 pip устанавливается вместе с самим языком. Его не нужно скачивать отдельно. Это понадобится, только если вы работаете с какой-то из более старых версий. 

Проверить, установлен ли pip, можно с помощью команды в терминале:

pip --version

Если менеджер уже установлен, высветится его версия. Если нет — появится сообщение, что такого пакета в системе нет. В таком случае pip можно скачать с PyPI и установить ручным способом.

Также pip можно загрузить с сайта PyPa — рабочей группы, которая занимается его разработкой. Вручную это можно сделать в любой системе. В Linux также возможно скачать его с помощью команды в терминале:

wget https://bootstrap.pypa.io/get-pip.py

Или с помощью easy install:

easy_install pip

Оба способа позволяют скачать файл get-pip.py. После этого его нужно запустить в Python через терминал:

python get-pip.py

После того как pip загрузится и инсталлируется, его можно будет использовать для установки библиотек. Это просто — фактически установить нужный пакет можно с помощью одной команды. Но возможности pip куда шире, чем у easy install. 

Менеджер умеет не только устанавливать, но и обновлять или удалять библиотеки в Python. А еще — подгружать зависимости, то есть модули, нужные для работы какой-то из библиотек.

Установить модуль в Python с помощью pip можно так:

pip install <имя пакета>

Кроме того, есть еще несколько команд, которые могут понадобиться при работе с библиотеками:

  • pip install -U <имя пакета> — обновить библиотеку до актуальной версии;
  • pip install <имя пакета>==<номер версии> — установить библиотеку какой-то конкретной версии;
  • pip install —force-reinstall <имя пакета> — принудительно переустановить библиотеку, например если та установилась с ошибками;
  • pip uninstall <имя пакета> — удалить библиотеку, которая перестала быть нужной;
  • pip list — посмотреть список установленных пакетов;
  • pip show <имя пакета> — посмотреть информацию о конкретном установленном пакете.

Достаточно ввести нужную команду в терминал, и pip автоматически выполнит нужное действие.

Что еще стоит сделать

Каким бы способом вы ни пользовались, после установки нужно проверить, точно ли пакет работает нормально. Для этого достаточно подключить библиотеку к Python-коду и попробовать ее использовать.

Чтобы конкретная программа «увидела» нужный модуль, его нужно добавить в код с помощью строчки:

import <имя пакета>

Обычно модули подключают в самом начале файла с кодом. То есть, первые строки программы — добавление библиотек, нужных для ее работы.

После этого можно использовать в коде нужные функции и компоненты из библиотеки. Если все установилось как следует, при этом не должно возникнуть никаких ошибок. Готово — нужными модулями можно пользоваться на свое усмотрение.

Python_Deep_6.11-5020-3e1392.png

Система модулей даёт возможность логически организовать код на Python. Кроме того, группирование в модули значительно облегчает сам процесс написания кода, плюс делает его более понятным. В этой статье поговорим, что такое модуль в Python, где он хранится и как обрабатывается.

Python_Pro_970x90-20219-1c8674.png

Модуль в Python — это файл, в котором содержится код на Python. Любой модуль в Python может включать в себя переменные, объявления функций и классов. Вдобавок ко всемe, в модуле может содержаться исполняемый код.

Команда import в Python

Позволяет использовать любой файл Python в качестве модуля в другом файле. Синтаксис прост:

    import module_1[, module_2[,... module_N]

Как только Python-интерпретатор встречает команду import, он выполняет импорт модуля, если он есть в пути поиска Python. Что касается пути поиска Python, то речь идёт о списке директорий, в которых интерпретатор выполняет поиск перед загрузкой модуля. Посмотрите на пример кода при использовании модуля math:

    import math
# Используем функцию sqrt из модуля math
print (math.sqrt(9))
# Печатаем значение переменной pi, определенной в math
print (math.pi)

Помните, что модуль загружается только один раз, вне зависимости от того, какое количество раз вы его импортировали. Таким образом исключается цикличное выполнение содержимого модуля.

Команда from … import

Команда from … import даёт возможность выполнить импорт не всего модуля целиком, а лишь конкретного его содержимого:

    # Импортируем из модуля math функцию sqrt
from math import sqrt
# Выводим результат выполнения функции sqrt.
# Нам больше незачем указывать имя модуля
print (sqrt(144))

# Но мы уже не можем получить из модуля то, что не импортировали
print (pi) # Выдаст ошибку

Обратите внимание, что выражение from … import не импортирует модуль полностью, а лишь предоставляет доступ к объектам, указанным нами.

Команда from … import *

Также в Python мы можем импортировать из модуля переменные, классы и функции за один раз. Чтобы это выполнить, применяется конструкция from … import *:

    from math import *

# Теперь у нас есть доступ ко всем функция и переменным, определенным в модуле math

print (sqrt(121))
print (pi)
print (e)

Использовать данную конструкцию нужно осторожно, ведь при импорте нескольких модулей можно запутаться в собственном коде.

Python_Pro_970x90-20219-1c8674.png

Так где хранятся модули в Python?

При импорте модуля, интерпретатор Python пытается найти модуль в следующих местах:
1. Директория, где находится файл, в котором вызывается команда импорта.
2. Директория, определённая в консольной переменной PYTHONPATH (если модуль не найден с первого раза).
3. Путь, заданный по умолчанию (если модуль не найден в предыдущих двух случаях).

Что касается пути поиска, то он сохраняется в переменной path в системном модуле sys. А переменная sys.path включает в себя все 3 вышеописанных места поиска.

2-20219-5cca3e.png

Получаем список всех модулей Python

Чтобы получить полный список модулей, установленных на ПК, используют команду help(«modules»).

3-20219-a2b765.png

Создаём свой модуль в Python

Для создания собственного модуля в Python нужно сохранить ваш скрипт с расширением .py. После этого он станет доступным в любом другом файле. Давайте создадим 2 файла: module_1.py и module_2.py, а потом сохраним их в одной директории. В первом файле запишем:

    def hello():
    print ("Hello from module_1")

А во втором вызовем функцию:

    from module_1 import hello

hello()

После выполнения кода 2-го файла получим:


Функция dir() в Python

Возвратит отсортированный список строк с содержанием всех имён, определенных в модуле.

# на данный момент нам доступны лишь встроенные функции
dir()
# импортируем модуль math
import math
# теперь модуль math в списке доступных имен
dir()
# получим имена, определенные в модуле math
dir(math)

4-20219-710929.png

Пакеты модулей в Python

Несколько файлов-модулей с кодом можно объединить в пакеты модулей. Пакет модулей — это директория, включающая в себя несколько отдельных файлов-скриптов.

Представьте, что у нас следующая структура:

|_ my_file.py
|_ my_package
         |_ __init__.py
         |_ inside_file.py

В файле inside_file.py определена некоторая функция foo. В итоге, дабы получить доступ к этой функции, в файле my_file нужно выполнить:

from my_package.inside_file import foo

Также нужно обратить внимание на то, есть ли внутри директории my_package файл init.py. Это может быть и пустой файл, сообщающий Python, что директория является пакетом модулей. В Python 3 включать файл init.py в пакет модулей уже не обязательно, но мы рекомендуем всё же делать это, чтобы обеспечить обратную совместимость.

Python_Pro_970x550-20219-0846c7.png

Современные разработки требуют гибкости и адаптивности, особенно когда дело касается среды программирования на Windows. Часто программисты сталкиваются с необходимостью добавления функциональности, которая поможет достичь требуемого результата быстрее. Именно здесь на помощь приходят готовые модули. Их применение импонирует простотой и позволяет сосредоточиться на решении ключевых задач, а не на дебрях сложных настроек.

В процессе работы над проектами важную роль играет команда pip, являющаяся помощником в интеграции модулей в ваши проекты. С ее помощью вы можете без труда добавлять, обновлять и управлять компонентами, необходимыми для ваших приложений. Это особенно ценно, учитывая разнообразие операционной системы Windows и ее специфику.

Чтобы задействовать pip, убедитесь, что она правильно установлена и функционирует в вашей системе. Если вы не уверены, достаточно открыть командную строку и ввести следующую команду, чтобы проверить доступность tools:

pip --version

В случае, если командная строка не распознает pip, необходимо выполнить ее загрузку и настройку. Это станет надежным шагом на пути к эффективной работе с многочисленными расширениями, которые откроют для вас новые горизонты в разработке. Каждый новый модуль – это возможность сделать ваше приложение более многофункциональным и удобным для пользователей.

Переходя ко внедрению различных расширений, не забудьте, что важно читать документацию к каждому из них. Она даст ценную информацию о возможностях и специфике работы с расширениями. По мере усложнения задач, вы откроете для себя все больше инструментов, которые упростят вашу работу и добавят проекту новизны и мощности. Таким образом, используя простые команды, вы обладаете возможностью творить уникальные решения.

Подготовка рабочей среды Python

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

Шаг 1: Установка интерпретатора

В первую очередь вам понадобятся программные компоненты для работы с языком. Например, загрузку и установку можно выполнить с официального сайта. Эта помощь обеспечит вас базовой необходимой средой для дальнейшего использования утилит и редакторов кода.

Шаг 2: Настройка переменных среды в Windows

После установки важно проверить, добавлен ли путь к месту, где установлен интерпретатор, в системные переменные. В Windows это гарантирует, что вы сможете запускать скрипты и команды из командной строки без указания полного пути. Откройте Панель управления > Система > Дополнительные параметры системы > Переменные среды. В разделе Системные переменные найдите переменную Path и добавьте путь к папке с интерпретатором.

Шаг 3: Работа с инструментом pip

Инструмент pip является важной частью управления пакетами. Он поможет добавлять и обновлять библиотеки из единого репозитория. Перед началом убедитесь, что pip обновлен до последней версии. Для этого в командной строке выполните команду:

python -m pip install --upgrade pip

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

Создание виртуального окружения

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

Первый шаг в создании виртуального окружения – установить инструмент venv, который доступен в комплекте с современными версиями системы. venv позволяет создавать локальные окружения для ваших проектов, что упрощает управление пакетами и их версиями.

На Windows откройте командную строку и выполните следующую команду, чтобы создать новое виртуальное окружение:

python -m venv myenv

В этой команде myenv – это имя папки, в которую будет помещено окружение. Вы можете назвать его по-другому, если это необходимо. После создания вам потребуется активировать виртуальное окружение, прежде чем устанавливать зависимости через pip.

Чтобы активировать окружение на Windows, используйте команду:

myenv\Scripts\activate

После выполнения этих шагов ваш командный интерфейс будет работать в контексте виртуального окружения. Теперь вы можете управлять пакетами, используя pip без риска изменения глобальных настроек.

Для выхода из виртуального окружения введите команду:

deactivate

Виртуальные окружения являются важным инструментом для создания надежных и независимых рабочих сценариев, упрощая управление проектами и сокращая потенциальные проблемы с совместимостью пакетов и библиотек.

Поиск необходимой библиотеки

Прежде чем работать с проектом, зачастую требуется расширить его функционал с помощью различных пакетов. В данном разделе рассмотрим, как можно эффективно найти нужную библиотеку под ваши задачи и как убедиться в ее надежности и популярности. Этот процесс важен, чтобы избежать проблем в будущем.

Наиболее распространенным инструментом для работы с библиотеками является менеджер пакетов pip, который позволяет быстро находить и загружать пакеты из открытых репозиториев. Чтобы выполнить поиск, можно воспользоваться командой:

pip search [название или ключевое слово]

Эта команда выдаст список пакетов, содержащих в своем описании указанное ключевое слово. Однако, стоит учитывать, что функция search может быть неактивна в некоторых версиях pip по умолчанию, и рекомендуется производить поиск на официальном сайте PyPI, где представлен огромный выбор пакетов с детальным описанием, инструкцией и количеством загрузок.

При необходимости вы можете получить дополнительную информацию о конкретном пакете, выполнив команду:

pip show [название пакета]

После выполнения команды, вы получите подробную информацию о версии, авторе, лицензии, а также ссылки на документацию и домашнюю страницу пакета.

При выборе библиотеки следует обращать внимание на следующие аспекты: как часто она обновляется, соответствует ли лицензия вашей задаче, и какая поддержка оказывается сообществом. Рекомендуется выбирать популярные и активно поддерживаемые пакеты, чтобы минимизировать риск столкнуться с неразрешенными ошибками и проблемами совместимости.

В дополнение, если ваш компьютер работает на Windows, убедитесь, что библиотека совместима с этой операционной системой. Это можно уточнить в документации пакета или на форуме разработчиков, где зачастую можно найти ответы на возникающие вопросы и помощь от более опытных пользователей.

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

Использование pip для установки

Вот последовательный план действий:

  1. Убедитесь, что pip установлен в вашей системе. Обычно он идет в комплекте с последними версиями, но если вы работаете на Windows и не уверены в этом, проверьте, выполнив в командной строке:
  2. Если pip отсутствует, следуйте инструкциям на официальном сайте для установки.
  3. Получите небольшой список пакетов, которые вы хотите добавить в проект. Для поиска нужного пакета можно использовать команду:

pip search имя_пакета

После выбора нужного пакета, выполните команду для инсталляции:

pip install имя_пакета

Это позволит добавить пакет в рабочую среду. Если возникнут сложности, pip предоставит подробную информацию об ошибках, что поможет в их устранении.

  • Для проверки успешности инсталляции используйте:

pip show имя_пакета

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

pip uninstall имя_пакета
pip install имя_пакета

Также полезно знать о возможностях обновления:

pip install --upgrade имя_пакета

Таким образом, pip предоставляет гибкие инструменты для управления пакетами, облегчая процесс добавления, обновления и удаления компонентов проекта.

Управление зависимостями и пакетами

При разработке проектов важно грамотно управлять зависимостями, чтобы избежать конфликтов и обеспечить стабильность работы. Современные инструменты предоставляют разнообразные возможности для эффективного управления пакетами, что позволяет вам сосредоточиться на разработке, не отвлекаясь на организационные моменты.

pip служит основным инструментом для работы с пакетами и их зависимостями. Однако, помимо базовых команд, таких как pip install, он предлагает более функциональные возможности для продвинутого управления. Например, команда pip freeze позволяет вывести список всех установленных пакетов с их версиями, что полезно для фиксации текущего состояния окружения.

Создание файла requirements.txt с помощью команды pip freeze > requirements.txt позволяет закрепить текущие версии и использовать их при развертывании проекта на других машинах. Установка всех пакетов из такого файла выполняется командой pip install -r requirements.txt, что гарантирует соответствие всех зависимостей необходимой спецификации.

Для обновления установленных пакетов используется команда pip install --upgrade, за которой следует имя пакета. Это может помочь в ситуации, когда необходимо получить последние исправления и улучшения, обеспечивая совместимость с новым функционалом.

При управлении множеством проектов рекомендуется организовать рабочее пространство таким образом, чтобы каждый проект был изолирован в своем виртуальном окружении. Это обеспечит независимость зависимостей и исключит конфликты между проектами.

Советы по устранению ошибок

При работе с пакетами и их конфигурацией могут возникать различные неисправности, мешающие корректной работе программ. Понимание того, как справляться с этими проблемами, позволит сэкономить время и успешно интегрировать необходимые пакеты в ваш проект. Ниже приведены методы, которые помогут эффективно диагностировать и исправлять возникающие ошибки.

Один из самых распространенных инструментов для работы с пакетами – это pip. Однако, иногда команды pip приводят к неожиданным ошибкам. Важно правильно интерпретировать сообщения об ошибках и искать их причины в соответствующей документации.

Иногда корректная работа pip оказывается невозможной из-за конфликтующих версий пакета. Использование команды pip list поможет увидеть перечень всех установленных пакетов и их версий. Если же найден конфликт, решите его, обновив или изменив необходимую версию с помощью команды pip install package-name==version.

При обнаружении проблем с сетью следует проверять подключение к интернету. Используйте команду pip --proxy, если требуется работа через прокси-сервер.

Для хранения информации об ошибках полезно вести журнал. Например, можно использовать команду pip install package-name --log log-file.txt, чтобы записывать лог выполнения каждой команды.

Команда Описание
pip list Показать перечень установленных пакетов с версиями
pip install package-name==version Установить специфическую версию пакета
pip --proxy Указать настройки прокси для работы в сети
pip install package-name --log log-file.txt Создать лог ошибок и процесса выполнения

Не забывайте обращаться за помощью к сообществу и к официальной документации, которая зачастую предоставляет решения для часто встречаемых проблем. Использование этих советов повысит вашу уверенность в решении возникающих неполадок и позволит идти в ногу с развивающимся проектом.

Комментарии

#Руководства


  • 0

Знания расширяют сознание, а библиотеки — возможности языков программирования. Расскажем, как подключить их в Python.

 vlada_maestro / shutterstock

Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей «ЛитЦех».

Мы уже рассказывали, как установить Python на различные операционные системы. Если хотите расширить возможности языка, используйте менеджер пакетов — именно с ним подключают библиотеки и модули. А если стоит вопрос, как научиться программировать на Python и получить работу, записывайтесь на курс «Python-разработчик».

В этом способе не нужен традиционный установщик пакетов pip — модуль подключается прямо из источника. Это удобно, когда у вас несколько версий Python и нужно импортировать модуль в разные. Рекомендуем научиться делать это сразу.

Для этого скачайте файл с PyPI и извлеките его в системе.

Поменяйте каталог на папку с файлом setup.

Если Python расположен вне пути вашей системы, она выдаст ошибку, что команда не найдена. Тогда укажите путь вручную. Для Windows это выглядит так:

c:\python34\python.exe setup.py install

Название говорит само за себя — способ легкий, буквально в два клика. Если устанавливали вручную, то на компьютере уже стоит setuptools, и вы сможете использовать easy install, что лежит в папке со скриптами Python.

Если добавить папку со скриптами в путь операционной системы, вы сможете вызвать easy install через командную строку без указания полного адреса.

Теперь выполните следующее:

easy_install package_name

И автоматически установите любой необходимый пакет. Однако есть ограничения:

  • Он может попробовать запустить пакет, который еще не загрузился до конца.
  • С помощью easy install нельзя провести деинсталляцию.

Из-за этих и других причин в сообществе языка Python придумали и реализовали программу pip.

Она появилась в Python 3.4 и скачивается вместе с самим языком, но если у вас более ранняя версия, то установите pip вручную:

  • Зайдите в PyPI и скачайте скрипт get-pip.py.
  • Затем выполните команду:

Установятся setuptools, если ранее его не было на компьютере, и сам pip. С его помощью подключают любые библиотеки и файлы — всё, что только может установить easy install. Но теперь для этого будет использоваться иная команда:

А для обновления пакета применяйте:

pip install -U PackageName

Бесплатный курс: «Быстрый старт в Python»
Начать учиться

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Официальная программа для записи windows 10 на флешку
  • Как открыть flv windows 7
  • Как запустить командную строку под администратором windows 10
  • Hp laserjet professional p1102w driver windows 10
  • Программа для активации windows по телефону