Как установить whl python windows
Перейти к содержимому

Как установить whl python windows

  • автор:

Tech blog by @dizballanze

Python wheels для быстрой установки зависимостей

Часто все зависимые python пакеты устанавливаются при помощи pip из PyPI и/или VCS. Такой подход имеет ряд недостатков:

  • производительность — каждый раз необходима скачивать и собирать пакеты что занимает большое количество времени
  • работа в оффлайн режиме — без подключения к интернету не получится установить зависимости
  • стабильность — установка зависимостей невозможна в случае:
    • неполадок на стороне PyPI
    • неполадок на стороне VCS (GitHub, Bitbucket, etc)
    • нарушения зависимостей (удаление репозитория с Github, удаление пакета из PyPI и тд)
    • неполадок у хостинг провайдера, которые могут привести к недоступности необходимых сетевых ресурсов (PyPI, VSC, etc)

    Для решения этой проблемы предлагается использование заранее подготовленных пакетов wheel для всех зависимостей и хранение их в репозитории системы.

    Создаем архив wheel пакетов

    Wheel — это современный формат распространения пакетов в Python среде, который пришел на замену eggs. Рассмотрим процесс создания архива wheel для всех зависимостей системы.

    Представим типичный Python проект с файлом requirements.txt содержащим зависимости. Пример файла requirements.txt :

    svgwrite==1.1.6 ipython==2.3.0 flask==0.10.1 flask-mongoengine==0.7.1 flask-uploads==0.1.3 -e git://github.com/Samael500/flask-principal.git@dab7f391f0eeb76a25fa1b3dae7308a0924c8a12#egg=flask-principal -e git://github.com/Samael500/flask-security.git@f1042b5db67147b8ddaa8b767b2dfe063bb56ffa#egg=flask-security Flask-Admin==1.0.8 Flask-Session==0.1.1 Flask-Script==2.0.5 gunicorn==19.1.1 Flask-Testing==0.4.2 tornado==4.0.2 nose==1.3.4 pep8==1.5.7 Pillow==2.6.1 pyflakes==0.8.1 pylama==6.1.1 spec==0.11.1 py-bcrypt==0.4 WTForms==1.0.4 blessings==1.6 beautifulsoup4==4.3.2 lxml==3.4.1 -e git://github.com/Samael500/jinja-assets-compressor.git@8e1639cec6f8b347794fe1334519daacc6b763b0#egg=jac PyYAML==3.10 

    В нашем файле requirements.txt есть зависимости из внешних ресурсов (не PyPI), которые предполагают загрузку пакетов из VCS (в данном случае из git репозиториев на Github). Скопируем старый requirements.txt в requirements-remote.txt , а в requirements.txt заменим внешние ресурсы на обычные пакеты из PyPI и получим:

    svgwrite==1.1.6 ipython==2.3.0 flask==0.10.1 flask-mongoengine==0.7.1 flask-uploads==0.1.3 flask-principal flask-security Flask-Admin==1.0.8 Flask-Session==0.1.1 Flask-Script==2.0.5 gunicorn==19.1.1 Flask-Testing==0.4.2 tornado==4.0.2 nose==1.3.4 pep8==1.5.7 Pillow==2.6.1 pyflakes==0.8.1 pylama==6.1.1 spec==0.11.1 py-bcrypt==0.4 WTForms==1.0.4 blessings==1.6 beautifulsoup4==4.3.2 lxml==3.4.1 jac PyYAML==3.10

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

    Cоздаем и активируем venv :

    pyvenv venv . venv/bin/activate

    Устанавливаем все пакеты как обычно, но из requirements-remote.txt :

    pip install -r requirements-remote.txt

    Сгенерируем архив всех пакетов PyPI, всех их зависимостей и всех зависимостей внешних пакетов (VCS). Для этого нам потребуется свежая версия pip и пакет wheel :

    pip install -U pip pip install wheel mkdir wheels pip wheel -w wheels/ -r requirements-remote.txt --pre --allow-all-external

    После этого получаем архив wheel пакетов для всех зависимостей кроме внешних (VCS). Для внешних пакетов устанавливаемых из исходников необходимо сгенерировать пакеты вручную при помощи setup.py bdist_wheel :

    cd venv/src/flask-principal python setup.py bdist_wheel --dist-dir ../../../wheels/ cd ../flask-security python setup.py bdist_wheel --dist-dir ../../../wheels/ cd ../jac python setup.py bdist_wheel --dist-dir ../../../wheels/

    Теперь в директории wheels есть все необходимые пакеты для установки всех зависимостей системы. Процесс уставновки зависимостей из локального архива пакетов выполняется так:

    pip install --no-index -f wheels/ -r requirements.txt

    обратите внимание, что используется файл requirements.txt , а не requirements-remote.txt .

    Тестирование скорости установки

    Обычная установка со скачиванием пакетов из PyPI и VCS:

    time pip install -r requirements-remote.txt real 4m20.655s user 1m31.242s sys 0m55.539s

    Установка из локального архива wheels:

    time pip install --no-index -f wheels/ -r requirements.txt real 1m3.412s user 0m4.808s sys 0m31.210s

    Из результатов можно сделать вывод, что время установки пакетов из локального архива в нашем случае меньше в 4 раза. Что логично, т.к. пакеты заново не скачиваются из интернета и не компилируются.

    Бонус

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

    Пример использования скрипта:

    python build_wheels --sources-dir venv/src/ --wheels-dir wheels/

    Скрипт пройдется по всем поддиректориям venv/src/ и в каждой из них попробует собрать пакет в директорию wheels/ .

    Install a Python Package .Whl File

    Install a Python Package .Whl File

    1. Python Wheel File Type
    2. How to Install Python .Whl (Wheel) File

    The most popular way to install the new Python package or library is to use pip or easy_install as introduced in Python tutorial installation section.

    But sometimes you couldn’t use these tools because of some restrictions like limited internet access. Here we will show you how to install a new Python package with a .whl file.

    Python Wheel File Type

    Python wheel file or in abbreviation .whl file is a specially formatted zip archive as a Python built-package. It contains all the installation files and could be installed by only unpacking the file.

    How to Install Python .Whl (Wheel) File

    Check pip is already installed

    If pip or pip.exe is not recognized, install it with the pip installation tutorial. Or you could check whether it is in the Python scripts directory, but the path of the script is not in the system variable. Then you could simply add the Python scripts path to the system variable PATH .

    set PATH=C:\Python\Scripts;%PATH% 
    Download the .whl file
    Install .whl file

    For example, if you have downloaded pycairo-1.16.3-cp27-cp27m-win32.whl to the folder C:\Downloads\ . Use the command below to install the whl package file.

    pip install C:\Downloads\pycairo-1.16.3-cp27-cp27m-win32.whl 

    Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

    Related Article — Python Package

    • Python Egg
    • Create Package in Python
    • Pillow Package in Python
    • Package vs Module in Python
    • __init__.py in Python

    Как установить python пакет в WHL формате без использования pip

    «python3-pip пакет тянет в зависимостях gcc и прочее» — это неправда, у pip нет никаких обязательных зависимостей кроме собственно питона.

    22 июл 2021 в 15:42
    уже поправил, не заметили что оно в рекомендациях. оставить вопрос или удалить?
    22 июл 2021 в 15:51

    1 ответ 1

    Сортировка: Сброс на вариант по умолчанию

    apt-get install -y --no-install-recommends python3-pip python3-wheel 

    Отслеживать
    ответ дан 22 июл 2021 в 15:49
    33.5k 3 3 золотых знака 26 26 серебряных знаков 60 60 бронзовых знаков
    python3-wheel используется только для сборки новых пакетов и на самом деле тоже не очень нужен
    22 июл 2021 в 15:51
    Для установки колес не требуется?
    22 июл 2021 в 18:09

    • python
    • python-3.x
    • pip
      Важное на Мете
    Похожие

    Подписаться на ленту

    Лента вопроса

    Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

    Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019

    Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

    Установка пакетов Python с помощью .whl файлов

    Python package installation with .whl files.

    Иногда при работе с Python возникает необходимость установить пакет, который доступен только в формате .whl (Wheel). Это бинарный формат дистрибутива, который позволяет устанавливать Python пакеты без компиляции исходного кода и не требует наличия всех библиотек, необходимых для сборки пакета.

    Примером может быть ситуация, когда создается проект на Python в Windows, и для его работы требуется библиотека, доступная только в формате .whl.

    Такой формат дистрибутивов поддерживается средством установки пакетов pip, начиная с версии 1.4.

    Процесс установки пакетов с помощью .whl файлов

    Процесс установки пакета с помощью .whl файла включает в себя несколько шагов:

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

      pip install some-package.whl

      Здесь some-package.whl — это имя скачанного файла.

    Эта команда должна быть выполнена в командной строке, и перед выполнением необходимо перейти в каталог, где расположен скачанный .whl файл.

    После выполнения команды пакет будет установлен и готов к использованию.

    Важно отметить, что для работы с .whl файлами необходим pip не ниже версии 1.4. Если установлена более старая версия, то ее можно обновить следующей командой:

    pip install —upgrade pip

    Эта команда обновит pip до последней доступной версии.

    Заключение

    Таким образом, установка Python пакетов с помощью .whl файлов — это простой и удобный способ добавить в проект необходимые библиотеки. Этот подход особенно полезен, когда нет возможности собрать пакет из исходного кода или когда пакет доступен только в формате .whl.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *