{ "cells": [ { "cell_type": "markdown", "id": "c84810de", "metadata": {}, "source": [ "# Сторонние библиотеки и пакетные менеджеры\n", "\n", "## Сторонние библиотеки \n", "\n", "Пришло время познакомимся с первой сторонней библиотекой для python, т.е. библиотекой, которая по умолчанию не включена в дистрибутив python и должна быть установлена самостоятельно. Существует огромное количество сторонних библиотек для python, а для удобства их установки были разработаны **пакетные менеджеры**. \n", "\n", "В качестве примеров сторонних библиотек можно привести [numpy](https://numpy.org/), [matplotlib](https://matplotlib.org/), [scipy](https://scipy.org/), [pandas](https://pandas.pydata.org/), [scikit-learn](https://scikit-learn.org/stable/), [tensorflow](https://www.tensorflow.org/), [torch](https://pytorch.org/docs/stable/torch.html), [openCV](https://docs.opencv.org/master/d6/d00/tutorial_py_root.html) и многие другие. Подавляющее большинство этих библиотек представляет из себя проекты с открытым исходным (`open source`), которые можно использовать в своих научных исследованиях абсолютно бесплатно. \n", "\n", "Самые популярные пакетные менеджеры --- `conda` и `PyPI`.\n", "\n", "## Conda\n", "\n", "При установке anaconda, [conda](https://docs.conda.io/en/latest/) ставится по умолчанию. Более того, anaconda, кроме самого python, пакетного менеджера `conda`, устанавливает сразу и ряд часто используемых библиотек. Например, `numpy`, `matplotlib`, `pandas`, `scipy`, `scikit-image` и `scikit-learn` устанавливаются по умолчанию. Библиотека `tensorflow` устанавливается по умолчанию только на машины с OS Linux, а библиотеки `torch` и `openCV` не входят в стандартный набор anaconda и требуют дополнительной установки.\n", "\n", "Самый простой способ установить библиотеку --- установить её глобально.\n", "```console\n", " conda install seaborn\n", "```\n", "\n", "## PyPI\n", "\n", "При установке \"голого\" python с [официального сайта](https://www.python.org/) устанавливаются только интерпретатор `CPython`. Никакие сторонние библиотеки и пакетные менеджеры не устанавливаются (хотя в установщике `windows` есть возможность установить `PyPI` одновременно с `CPython`). \n", "\n", "[PyPI](https://pypi.org/) (Python Package Index) --- пакетный менеджер, в целом аналогичный `conda`. Установка библиотек глобально осуществляется схожей командой.\n", "\n", "```console\n", " pip install seaborn\n", "```\n", "\n", "Или чуть более сложной, но позволяющей явно указать интерпретатор python, для которого устанавливается библиотека (полезно, когда стоит несколько версий python).\n", "\n", "```console\n", " python -m pip install seaborn\n", "```\n", "\n", "\n", "## Виртуальные окружения\n", "\n", "Установка библиотеки глобально означает, что библиотека будет доступна для импортирования в любом коде. Такой подход имеет ряд недостатков. Например, если библиотек становиться слишком много, то могут возникнуть проблемы с совместимостью каких-то из них между собой. Такое может возникнуть, если в разных проектах используются разные библиотеки, но библиотеки из одного проекта требуют какой-то пакет одной версии, а библиотеки другой версии требуют тот же пакет, но другой версии (например, какие-то из них давно не обновлялись).\n", "\n", "Чтобы избежать таких проблем, рекомендуется использовать виртуальные окружения (`virtual environments`), которые позволяют создавать отдельные окружения, каждое из которых может иметь свой набор библиотек своих версий. Подробнее о виртуальных окружения в anaconda можно почитать [здесь](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html), а в \"голом\" `CPython` предусмотрен модуль [`venv`](https://docs.python.org/3/library/venv.html).\n", "\n", "\n", "## Импортирование сторонних библиотек\n", "\n", "После установки библиотеки её можно импортировать так же, как и модули стандартной библиотеки.\n", "Самый стандартный импорт\n", "```python\n", "import scipy\n", "```\n", "или импорт с созданием псевдонима\n", "```python\n", "import numpy as np\n", "```\n", "или импорт определенных имен из модулей\n", "```python\n", "from matplotlib import pyplot\n", "```\n", "или комбинированный подход\n", "```python\n", "from matplotlib import pyplot as plt\n", "```\n", "или даже так\n", "```python\n", "import matplotlib.pyplot as plt\n", "```" ] } ], "metadata": { "jupytext": { "text_representation": { "extension": ".md", "format_name": "myst" } }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" }, "source_map": [ 10 ] }, "nbformat": 4, "nbformat_minor": 5 }