Перейти к содержимому

Pip install user куда устанавливает

  • автор:

Python (Русский)

Состояние перевода: На этой странице представлен перевод статьи Python. Дата последней синхронизации: 28 мая 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

  • Python package guidelines
  • Виртуальное окружение
  • mod_wsgi
  • Django
  • IDE#Python IDEs

Python — интерпретируемый, интерактивный, объектно-ориентированный язык программирования. Включает модули, исключения, динамическую типизацию, высокоуровневые типы данных и классы. Поддерживает различные парадигмы программирования помимо ООП, вроде процедурного и функционального программирования. Python соединил в себе впечатляющую мощь и простоту синтаксиса. В нём предусмотрены интерфейсы для многих системных вызовов и библиотек, а также оконных систем; возможно расширение с помощью С и С++. Помимо всего перечисленного, он может использоваться как язык расширений для приложений, которым необходим программный интерфейс. Наконец, Python портируем: он запускается на множестве вариантов Unix, включая Linux и macOS, а также Windows.

Установка

Другие версии

Старые и будущие версии Python доступны в AUR и могут быть полезны, если вас одолевает историческое любопытство, если старые приложения не запускаются на более новых версиях или если вам необходимо протестировать программы на возможность работы в дистрибутивах со старыми версиями интерпретатора:

  • Python 3.12: python312AUR
  • Python 3.10: python310AUR
  • Python 3.9: python39AUR
  • Python 3.8: python38AUR
  • Python 3.7: python37AUR (не поддерживается)
  • Python 3.6: python36AUR (не поддерживается)
  • Python 2.7: python2AUR (не поддерживается)

Важно: Официальная поддержка Python 3.6 и более старых версий прекращена. Смотрите Status of Python versions.

Каждый из этих пакетов устанавливает отдельный исполняемый файл, содержащий в своём имени номер версии, например python3.7 для Python 3.7, что позволяет устанавливать несколько версий одновременно. Также можно использовать pyenv для лёгкой установки разных версий Python и переключения между ними.

Дополнительные модули/библиотеки для старых версий Python можно найти в AUR по слову pythonверсия_без_точки> . Например, введите python37 для поиска модулей версии 3.7.

Также можно скачать исходный код любой версии на странице https://www.python.org/downloads/.

Альтернативные реализации

Пакет python предоставляет CPython, стандартную реализацию Python, но существуют и другие реализации. Они обычно основаны на более старых версиях Python и лишь частично совместимы с CPython.

Доступные в Arch Linux реализации:

  • PyPy — Реализация Python, написанная на Python. Улучшенная производительность и использование памяти по сравнению с CPython.
  • Jython — Реализация языка Python на Java. Используется для встраивания сценариев Python в программы на Java или использования библиотек Java в программах на Python.
  • micropython — Python для микроконтроллеров. Включает небольшое подмножество стандартной библиотеки Python; оптимизирован под запуск на микроконтроллерах в ограниченном окружении.
  • IronPython — Реализация языка программирования Python, которая плотно интегрирована с .NET. Может использовать библиотеки .NET и позволяет .NET-программам использовать библиотеки Python.

Существуют и другие реализации. Некоторые из них, вроде Stackless, Pyston и Cinder, используются внутри больших технологических компаний. Другие имели некоторое значение в прошлом, но больше не поддерживаются из-за улучшений более популярных реализаций.

Альтернативные оболочки

Пакет python включает интерактивную оболочку/REPL Python, которая запускается командой python . Доступны также следующие оболочки:

  • bpython — Приятный интерфейс для интерпретатора Python.
  • IPython — Мощная интерактивная оболочка Python.
  • Jupyter — Сетевое приложение на основе IPython.
  • ptpython — Продвинутый Python REPL, собранный с prompt-toolkit.

Управление пакетами

Существует целый ряд способов установить пакет Python в Arch Linux:

  • Официальные репозитории и AUR — большое количество популярных пакетов доступно в репозиториях Arch. Это предпочтительный вариант установки системных пакетов.
  • pip(1) — Официальный установщик пакетов для Python. Используйте pip для установки пакетов из Python Package Index и других индексов.
  • pipx — Связан с pip, но создаёт у запускающего его пользователя изолированную среду для каждого приложения и связанных с ним пакетов, предотвращая конфликты с системными пакетами. Ориентирован на пакеты, которые могут быть запущены из командной строки непосредственно как приложения. Вы можете использовать pipx для установки пакетов из Python Package Index и других источников.
  • Anaconda — Открытая система управления пакетами и окружением, изначально созданная для программ Python. С помощью Conda можно устанавливать пакеты из репозиториев Anaconda.
  • Miniconda — Легковесная альтернатива для Anaconda, которая устанавливает пакетный менеджер, но не устанавливает пакеты для научных вычислений по умолчанию.

При установке пакетов с помощью pip рекомендуется использовать виртуальное окружение (или управление окружением Conda), чтобы предотвратить конфликты с системными пакетами в каталоге /usr . В качестве альтернативы можно устанавливать пакеты командой pip install —user , которая устанавливает пакеты для пользователя, а не в системный каталог /usr .

Смотрите Python Packaging User Guide на предмет лучших практик по управлению пакетами.

Исторически использовалась команда easy_install (часть python-setuptools ) для установки пакетов, распространяемых как Eggs. easy_install и Eggs были заменены на pip и Wheels. Подробнее см. pip vs easy_install и Wheel vs Egg.

Примечание: Существуют также инструменты для интеграции pip и pacman путём автоматической генерации файлов PKGBUILD для выбранных пакетов PyPI: смотрите Creating packages#PKGBUILD generators.

Совет: pipenv предоставляет отдельный интерфейс командной строки для Pipfile, pip и virtualenv. Он доступен в пакете python-pipenv .

Привязки к графическим библиотекам

  • Tkinter — Стандартный интерфейс Python к набору графических инструментов Tk.
  • Qt for Python (PySide2) — Официальные привязки Python к Qt5.
  • Qt for Python (PySide6) — Официальные привязки Python к Qt6.
  • pyQt — Набор привязок Python к Qt.
  • PyGObject — Привязки Python для библиотек на основе GObject вроде GTK, GStreamer, WebKitGTK, GLib и GIO.
  • wxPython — Кроссплатформенный набор GUI-инструметов для Python, который выступает в роли обёртки для wxWidgets.

Для использования этих привязок в Python, скорее всего, потребуется доустановить соответствующие наборы библиотек (например, для использования Tkinter нужно установить tk ).

Советы и рекомендации

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

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

Автодополнение в оболочке Python

Автодополнение по клавише Tab включено в интерактивной оболочке по умолчанию. Учтите, что дополнение readline работает только для строк в глобальном пространстве имён. Пакет python-jedi расширяет возможности автодополнения [1].

Решение проблем

Module not found после перехода на новую версию Python

После обновления пакета python до новой минорной версии (например, с 3.10 на 3.11) некоторые Python-приложения могут начать выдавать ошибку No module named имя_модуля .

Это происходит, когда зависимость недоступна или не установлена для текущей версии Python. Пакеты Python устанавливаются в каталог site-packages конкретной версии (общесистемный /usr/lib/pythonX.Y/site-packages/ или пользовательский ~/.local/lib/pythonX.Y/site-packages/ , где X.Y — версия, например 3.11). Поэтому каждый раз при переходе на новую минорную версию Python-пакеты, собранные для предыдущей версии Python, должны быть пересобраны для новой версии.

Пакеты из официальных репозиториев обновляются одновременно с Python, однако пакеты из сторонних источников, например из AUR, пользователь должен обновить самостоятельно. Смотрите Пользовательский репозиторий Arch#Обновление пакетов и Часто задаваемые вопросы#Что если я запущу полное обновление и обновится только библиотека, но не приложение, которое от нее зависит?

Смотрите также

Официальные ресурсы

  • Официальная документация (для автономного доступа можно установить её с помощью пакета python-docs )
  • Официальное руководство

Сторонние ресурсы

  • Automate the Boring Stuff with Python — книга Creative Commons
  • Awesome Python — обновляемый список ресурсов о Python
  • A Byte of Python — книга Creative Commons
  • Cracking Codes With Python — бесплатная онлайн-книга
  • Crash into Python — бесплатное руководство
  • Debugging in Python [устаревшая ссылка 2023-05-06 ⓘ] — руководство по использованию pdb , отладчика Python
  • Dive Into Python — книга Creative Commons
  • Fluent Python — коммерческая книга
  • Introducing Python — коммерческая книга
  • Invent Your Own Computer Games with Python — бесплатная онлайн-книга
  • Learn Python — бесплатное интерактивное руководство
  • Learn Python the Hard Way — коммерческая книга
  • Pythonspot Python Tutorials — бесплатные онлайн-руководства
  • Think Python — книга Creative Commons

Retrieved from «https://wiki.archlinux.org/index.php?title=Python_(Русский)&oldid=784419»

Pip настройка директории для установки пакетов

Pip по умолчанию ставит пакеты в AppData\Roaming\Python\Python38\ что несколько не устраивает. Хотелось бы вернуть старое поведение когда все пакеты ставились в папку с python, или же указать произвольную папку для установки по умолчанию. Устанавливать каждый раз через -target неудобно. Есть возможность это поправить?

Отслеживать
задан 23 авг 2020 в 15:04
3,186 2 2 золотых знака 9 9 серебряных знаков 16 16 бронзовых знаков

А где сам питон стоит? Сколько питон не ставил (всегда в c:/python) — всегда туда же и пакеты падают.

23 авг 2020 в 15:43
c:/python там и установлен, и да раньше все было ок.. а в последних версиях что-то поменялось.
26 авг 2020 в 20:46

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

26 авг 2020 в 22:43

2 ответа 2

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

Можно либо создать конфиг файл для pip, где описать дефолтные значения для ключей командной строки, либо установить специальным образом именованые переменные окружения. Оба способа описаны в юзерзгайде pip https://pip.pypa.io/en/stable/user_guide/#config-file

Отслеживать
ответ дан 23 авг 2020 в 18:53
2,261 1 1 золотой знак 8 8 серебряных знаков 11 11 бронзовых знаков

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

Установить библиотеку можно так:

pip install instld 

Это можно сделать один раз и прямо в систему.

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

import installed with installed('some_package') as context: import some_module 

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

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

  • У вас просто нет другого способа запустить конфликтующие зависимости или разные версии одной библиотеки одновременно.
  • Вы пишете бенчмарк или тест какой-то библиотеки и вам интересно попробовать несколько версий. Тогда вы можете перебрать их в цикле, открывая на каждой итерации по новому контексту.
  • Вы выбираете из нескольких библиотек одного класса и экспериментируете с ними в командной оболочке. В этом случае постоянно выходить из оболочки и выполнять pip install не очень удобно, плюс потом бы пришлось подчищать за собой «мусор» (удалять те пакеты, которые не прошли отбор).
  • Вы решили поделиться скриптом с другом и хотите отправить его одним файлом. В этом случае удобнее спрятать установку зависимостей прямо в этот файл.

Инструмент pip и альтернативные источники пакетов — Python: Настройка окружения

Ранее в курсе мы установили пакет cowsay. Если не уточнить иное, то pip устанавливает пакеты из основного индекса — PyPI. Оттуда был взят и пакет cowsay.

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

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

Альтернативные индексы пакетов

Если вызывать команду pip install с опцией —index-url , то pip будет искать пакет и все его зависимости в индексе по указанному url-адресу. Давайте попробуем установить пакет из специального тренировочного индекса Test PyPI :

Заметьте, что url-адрес индекса указан в виде что-то-там/simple — именно так по соглашению должны именоваться индексы.

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

У pip и для такого случая есть опция: можно в дополнение к —index-url указать —extra-index-url . В такой конфигурации pip ищет каждый пакет в первом индексе, а если не найдет, то обращается к дополнительному индексу. Команда целиком может выглядеть так:

-m pip install --user --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple dogesay 

Установка пакетов из репозиториев на GitHub

Иногда пакет не хочется выкладывать на PyPI. Например, когда все еще сырой пакет нужно проверить и попробовать установить. В подобных случаях пакеты устанавливают прямо из git-репозиториев. Давайте установим с помощью pip наш учебный hexlet-boilerplates/python-package :

Этот пакет установится, только если у вас pip версии 20 и выше. Если вы увидите ошибку при установке пакета, попробуйте обновить сам pip такой командой:

-m pip install --user --upgrade pip 

Здесь вместо имени пакета указывается тот же url-адрес, который вы использовали бы при клонировании репозитория, но дополненный приставкой git+ . Эта приставка подсказывает pip, что по url-адресу расположен Git-репозиторий — не обязательно размещенный на GitHub.

Во время установки пакета pip вызывает git clone , чтобы клонировать репозиторий во временную директорию. Если репозиторий закрытый, то понадобится ввести имя пользователя и пароль для доступа к репозиторию. Это работает и с приватными репозиториями GitHub.

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

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Управление пакетами в Python

Если на машине установлена только одна версия python, или установка производится в активированном виртуальном окружении, то можно установить пакет/ы следующим образом:

pip install wheel requests 

Узнать к какой версии Python принадлежит pip :

[eugene@wks1 ~]$ pip -V pip 20.3.4 from /usr/lib/python2.7/site-packages/pip (python 2.7) 

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

python3.8 -m pip install airflow 

Ручная сборка python-пакета

Установка пакетов в виртуальное окружение

Создадим каталог для Python-проекта, где развернём виртуальное окружение, активируем его, после чего установим пакет wheel:

[eugene@wks1 ~]$ mkdir -p ~/pythonprojects/airflow [eugene@wks1 ~]$ cd ~/pythonprojects/airflow [eugene@wks1 ~]$ python3.6 -m venv . [eugene@wks1 ~]$ source bin/activate (airflow) [eugene@wks1 ~]$ pip -V pip 18.1 from /root/pythonprojects/airflow/lib64/python3.6/site-packages/pip (python 3.6) (airflow) [eugene@wks1 ~]$ pip install wheel Collecting wheel Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB) Installing collected packages: wheel Successfully installed wheel-0.37.1 

Адреса директорий с установленными пакетами

  1. Пакеты, добавляемые через yum , устанавливаются в зависимости от версии Python в каталог /usr/lib/python3.x и доступны для всей системы. Напомню, что пакеты устанавливаемые с помощью pip install или python3 -m pip install из-под ‘root’а , устанавливаются также в /usr/lib/python3.x . Чтобы исключить такое поведение, необходимо устанавливать такие пакеты с опцией —user . В этом случае, сам пакет установится в /root/.local/lib/python3.6 . Исполняемые же файлы размещаются в /root/.local/bin . Системные пакеты останутся нетронутыми, как и их зависимости.
  2. Пакеты, добавляемые через sudo pip install , размещаются там же, как в примере выше и переписывают файлы, установленные через yum .
  3. Пакеты, добавляемые из-под ‘root’а через sudo pip install —user , устанавливаются в зависимости от версии Python, например в /root/.local/lib/python3.8 , и доступны только для аккаунта root .
  4. Пакеты, добавляемые через pip install , устанавливаются в зависимости от версии Python, например в ~/.local/lib/python3.8 , то есть в домашний каталог пользователя и доступны только пользователю.
  5. Пакеты, устанавливаемые в виртуальном окружении, размещаются в этом же каталоге, где развёрнут ‘venv’, точнее в подкаталоге ./lib/python3.8 .

Способы обновления пакетов

Обновление pip

Запуск из-под обычного пользователя:

pip install --upgrade pip 

Запуск из-под ‘root’а:

pip install --user --upgrade pip 

Принудительное обновление пакета, который установлен через yum

ERROR: Cannot uninstall 'systemd-python'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. 
pip install --ignore-installed systemd-python 

Способы удаления всех пакетов

Способ с сохранением списка пакетов

Остаётся возможность восстановления всех пакетов из списка. Сохраняем список, удаляем пакеты, устанавливаем пакеты:

pip freeze > requirements.txt pip uninstall -r requirements.txt -y pip install -r requirements.txt 

Удаление всех пакетов без сохранения списка

pip uninstall -y -r <(pip freeze) 
pip freeze | xargs pip uninstall -y 

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

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