Skip to content

Latest commit

 

History

History
1064 lines (756 loc) · 45.5 KB

File metadata and controls

1064 lines (756 loc) · 45.5 KB

Лекция 18. Virtual env. Pip. Устанавливаемые модули. Pyenv.

Виртуальное окружение (virtual environment) — это изолированная среда для выполнения Python, которая позволяет управлять зависимостями проекта без влияния на системные пакеты Python. Это особенно важно для проектов, которые требуют различных версий библиотек.

Зачем это вообще нужно?

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

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

Как работает виртуальное окружение?

Виртуальное окружение (virtual environment) — это изолированная среда для выполнения Python, которая позволяет управлять зависимостями проекта без влияния на системные пакеты Python. Виртуальное окружение позволяет создавать независимые окружения для разных проектов, каждый со своими установленными библиотеками и версиями Python.

Основные концепции и компоненты

  1. Изоляция: Виртуальное окружение изолирует зависимости проекта, что предотвращает конфликты между пакетами, используемыми в разных проектах.
  2. Копия интерпретатора Python: Виртуальное окружение содержит копию интерпретатора Python и минимальный набор необходимых стандартных библиотек.
  3. Собственная директория для пакетов: Все установленные пакеты и зависимости хранятся в отдельной директории, что обеспечивает независимость от глобальных пакетов.

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

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

  1. Создание директорий: Создаются директории для хранения копий интерпретатора Python и пакетов.
  2. Копирование интерпретатора: Копируется или создается ссылка на интерпретатор Python, используемый для создания окружения.
  3. Установка необходимых файлов: Создаются и устанавливаются необходимые файлы и скрипты для управления окружением, такие как activate, deactivate, и конфигурационные файлы.

Это же вкратце.

  • Когда вы устанавливаете python на компьютер, вы устанавливаете сам язык, его зависимости и стандартную > библиотеку.
  • Если вы начнете устанавливать пакеты прям туда, то вы установите модули сразу для всех проектов.
  • Виртуальное окружение это по сути создание папки с копией всего что устанавливается вместе с python-ом. И теперь когда у нас есть копия мы можем делать с ней все что угодно. Она никак не повлияет, ни на оригинал, ни на другие копии
  • После создания виртуальное окружение необходимо активировать (об этом дальше)

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

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

myenv/ (это название, тут могло быть все что угодно)
├── bin/ (Scripts/ на Windows)
│   ├── activate
│   ├── python
│   └── ...
├── lib/ (Lib/ на Windows)
│   └── pythonX.X/
│       └── site-packages/
├── include/
└── pyvenv.cfg
  • bin/Scripts: Содержит скрипты для активации/деактивации окружения и сам интерпретатор Python.
  • lib/Lib: Содержит установленные пакеты и зависимости.
  • include: Содержит файлы заголовков C, если они требуются для пакетов.
  • pyvenv.cfg: Конфигурационный файл, содержащий информацию о виртуальном окружении.

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

Windows

Для создания виртуального окружения на Windows, выполните следующие шаги:

  1. Установите Python, если он еще не установлен.
  2. Откройте командную строку (Command Prompt) или PowerShell.
  3. Выполните команду:
    python -m venv myenv
    Здесь myenv — это имя вашего виртуального окружения.

macOS и Linux

Для создания виртуального окружения на macOS и Linux, выполните следующие шаги:

  1. Установите Python, если он еще не установлен.
  2. Откройте терминал.
  3. Выполните команду:
    python3 -m venv myenv
    Здесь myenv — это имя вашего виртуального окружения.

Обратите внимание! В данной команде venv - это название модуля который нужно запустить, а myenv название виртуального окружения которое нужно создать.

Команда в этой ситуации использует относительный путь. Это значит что вам нужно быть осторожным и проверять в какой папке вы в данный момент находитесь. Либо использовать абсолютный путь

Активация виртуального окружения

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

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

Пример активации на разных операционных системах:

  • Windows: myenv\Scripts\activate
  • macOS и Linux: source myenv/bin/activate

Как только вы активируете свое виртуальное окружение, в консоли тут же появится об этом отметка (скрин ниже). Теперь все ваши действия связанные с python, будут затрагивать только это виртуальное окружение. А значит вы можете с ним делать, все что угодно.

Пример из Git bash консоли, на Windows, но в стиле linux.

(myvenv)

Вот эта надпись перед началом строки и говорит нам о том, что виртуальное окружение подключено

Работа в виртуальном окружении

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

Деактивация виртуального окружения

Для деактивации виртуального окружения и возврата к глобальной среде Python, используется команда:

deactivate

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

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

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

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

rm -rf myenv  # для macOS и Linux
rmdir /s /q myenv  # для Windows

Сравнение виртуальных окружений и Docker

Что такое Docker?

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

Docker работает с любыми языками программирования и базами данных. И в целом является более мощным инструментом для изоляции.

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

  • Изоляция: Обеспечивает изоляцию библиотек и пакетов Python.
  • Использование: Легко создать и использовать для небольших проектов.
  • Производительность: Низкие накладные расходы на систему.
  • Ограничения: Изоляция ограничена только Python-зависимостями.

Docker

  • Изоляция: Полная изоляция на уровне операционной системы, включая все зависимости и системные библиотеки.
  • Использование: Более сложен в настройке, но обеспечивает высокий уровень изоляции и воспроизводимости.
  • Производительность: Больше накладных расходов по сравнению с виртуальными окружениями Python.
  • Применение: Подходит для комплексных проектов, требующих определенной версии ОС или нескольких языков программирования.

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

В рамках нашего курса нам будет достаточно virtual env. Но вы всегда можете изучить docker самостоятельно, лишними эти знания точно не окажутся, а возможно даже пригодятся на собеседованиях.

Pip и его аналоги

pip (от англ. Python Installs Packages) – это основной инструмент для управления пакетами в Python. С его помощью можно устанавливать, обновлять и удалять библиотеки и другие зависимости. pip широко используется благодаря своей простоте и удобству.

pip идет в комплекте с python, если вы уже установили python это значит что pip у вас уже установлен и вы можете им свободно пользоваться.

Если установить пакет без включенного виртуального окружения. То он установится прямо в основной установленный python. Следите за этим и устанавливайте пакеты только при включенном виртуальном окружении.

Основные функции pip

Установка пакетов

Для установки пакета используется команда:

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

Например, чтобы установить библиотеку requests, выполните:

pip install requests

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

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

pip install имя_пакета==x.x

где x.x - это номер версии

Например, чтобы установить библиотеку requests, выполните:

pip install requests==2.16

или

pip install requests==2.16.2

Обновление пакетов

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

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

Например, чтобы обновить библиотеку numpy:

pip install --upgrade numpy

Удаление пакетов

Для удаления пакета используется команда:

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

Например, чтобы удалить библиотеку pandas:

pip uninstall pandas

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

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

pip list

Поиск пакетов

Для поиска пакетов по ключевому слову используется команда:

pip search ключевое_слово

Замораживание и восстановление зависимостей

Это сверх важная штука, мы будем это делать. И даже больше, с этого занятия ПР без requirements.txt рассматриваться не будет

pip позволяет замораживать (фиксировать) зависимости проекта в файл requirements.txt, что удобно для развертывания приложения на других системах:

pip freeze > requirements.txt

Для установки зависимостей из файла requirements.txt используется команда:

pip install -r requirements.txt

Как работает pip

pip работает с репозиторием пакетов Python Package Index (PyPI), откуда загружает и устанавливает пакеты. Когда вы устанавливаете пакет, pip выполняет следующие шаги:

  1. Поиск пакета: pip отправляет запрос в PyPI для поиска указанного пакета.
  2. Загрузка пакета: pip загружает пакет и его зависимости.
  3. Установка пакета: pip устанавливает пакет в вашу систему, включая все необходимые зависимости.

На момент написания лекции в PyPI находилось 559249 пакетов, доступных к установке

pip также поддерживает установку пакетов из различных источников, таких как:

  • Локальные файлы (pip install ./some-package)
  • Архивы (pip install some-package.tar.gz)
  • Репозитории версионного контроля (например, Git) (pip install git+https://github.com/username/repo.git)

Настройка pip

pip можно настраивать через файл конфигурации pip.conf (Linux и macOS) или pip.ini (Windows). Вот пример файла конфигурации:

[global]
timeout = 60
index-url = https://pypi.org/simple
trusted-host = pypi.org

Этот файл можно разместить в одном из следующих мест:

  • /etc/pip.conf (глобально для всех пользователей)
  • ~/.pip/pip.conf (для текущего пользователя)
  • в папке проекта под именем pip.conf или pip.ini

Аналоги pip

Кроме pip, существуют и другие системы управления пакетами для Python:

  1. conda: Инструмент для управления пакетами и окружениями, используемый в Anaconda и Miniconda. Поддерживает пакеты не только для Python, но и для других языков и системных библиотек.

    conda install имя_пакета
  2. poetry: Современный инструмент для управления зависимостями и упаковки проектов. Poetry включает в себя функциональность для работы с виртуальными окружениями.

    poetry add имя_пакета
  3. pipenv: Инструмент, объединяющий функциональность pip и virtualenv. Pipenv упрощает создание и управление виртуальными окружениями и зависимостями проекта.

    pipenv install имя_пакета
  4. easy_install: Устаревший инструмент, который входил в состав setuptools. В настоящее время рекомендуется использовать pip вместо easy_install.

В реальности используется и pip, и conda, и poetry, и pipenv. Чаще я все таки пользовался pip, но остальные мне тоже встречались. Если где-то столкнетесь, знайте это просто аналоги pip

Устанавливаемые модули

Существует невероятно огромное количество различных устанавливаемых пакетов которыми мы можем (и будем пользоваться).

Если попытаться найти самые популярные пакеты для установки python, то вы найдете:

  • NumPy: Библиотека для работы с массивами и матрицами, а также для выполнения математических операций над ними.
  • Pandas: Библиотека для удобной работы с данными, обеспечивающая средства для их манипуляции и анализа.
  • Requests: Библиотека для простого и удобного выполнения HTTP-запросов.
  • Matplotlib: Библиотека для создания статических, анимированных и интерактивных визуализаций данных.
  • SciPy: Библиотека для научных и технических вычислений, которая включает модули для оптимизации, линейной алгебры, интеграции и других задач.
  • TensorFlow: Платформа для машинного обучения и искусственного интеллекта, разработанная для построения и обучения моделей.
  • Scikit-Learn: Библиотека для машинного обучения, предоставляющая простые и эффективные инструменты для анализа и моделирования данных.
  • Flask: Легковесный веб-фреймворк для создания веб-приложений на Python.
  • Django: Высокоуровневый веб-фреймворк, предназначенный для быстрого создания безопасных и масштабируемых веб-приложений.
  • PyTorch: Библиотека для машинного обучения, известная своей гибкостью и динамическими вычислительными графами.

Итого, 4 пакета для работы с данными(DS/Big data), 3 пакета для машинного обучения (ML), 2 веб-фреймворка (web) и одна библиотека requests

Инструменты для DS/ML мы разбирать не будем. Веб фреймворк будем изучать весь остаток курса. Что же такое requests?

requests

Это пакет нужен, что бы отправлять HTTP запросы. Технически внутри python-а уже есть все необходимое для отправки таких запросов. Но в этой библиотеке все описано просто невероятно удобно и элегантно.

Библиотека requests для Python используется для выполнения HTTP-запросов. Она предоставляет простой и интуитивно понятный API для взаимодействия с веб-сервисами. Вот краткий обзор с примерами использования:

Установка

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

pip install requests

Выполнение GET-запроса

GET-запрос используется для получения данных с сервера.

import requests

response = requests.get('https://api.example.com/data')
print(response.status_code)  # Статус ответа, например, 200
print(response.text)  # Тело ответа в виде текста
print(response.json())  # Тело ответа, преобразованное в JSON (если применимо)

Передача параметров в GET-запросе

Можно передавать параметры запроса в URL с помощью параметра params.

params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://api.example.com/data', params=params)
print(response.url)  # Полный URL запроса

Выполнение POST-запроса

POST-запрос используется для отправки данных на сервер.

data = {'username': 'testuser', 'password': 'testpass'}
response = requests.post('https://api.example.com/login', data=data)
print(response.status_code)  # Статус ответа
print(response.json())  # Тело ответа, преобразованное в JSON (если применимо)

Отправка JSON данных в POST-запросе

Можно отправлять данные в формате JSON, указав параметр json.

json_data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://api.example.com/data', json=json_data)
print(response.json())  # Тело ответа в виде JSON

Обработка заголовков ответа

Можно получать и обрабатывать заголовки ответа.

response = requests.get('https://api.example.com/data')
print(response.headers)  # Все заголовки ответа
print(response.headers['Content-Type'])  # Определенный заголовок

Добавление заголовков в запрос

Можно добавлять свои заголовки в запрос с помощью параметра headers.

headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get('https://api.example.com/protected', headers=headers)
print(response.status_code)

Обработка ошибок

Библиотека requests предоставляет удобные методы для обработки ошибок.

try:
    response = requests.get('https://api.example.com/data')
    response.raise_for_status()  # Возбудит исключение для кодов ответа 4xx/5xx
except requests.exceptions.HTTPError as err:
    print(f"HTTP error occurred: {err}")
except requests.exceptions.RequestException as err:
    print(f"Error occurred: {err}")

Просто полезные пакеты

more_itertools

pip install more_itertools

more_itertools - это библиотека, предоставляющая дополнительные инструменты для работы с итераторами и последовательностями, расширяя возможности стандартного модуля itertools.

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

  • chunked: Разделяет последовательность на подсписки фиксированной длины.

    from more_itertools import chunked
    
    data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    chunks = list(chunked(data, 3))
    print(chunks)  # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • collapse: Развертывает вложенные итераторы в один плоский итератор.

    from more_itertools import collapse
    
    nested = [[1, 2, [3, 4]], [5, 6], 7]
    flat = list(collapse(nested))
    print(flat)  # [1, 2, 3, 4, 5, 6, 7]

dateutils

pip install dateutil

dateutil (часто упоминается как dateutils) - мощная библиотека для работы с датами и временем. Она предоставляет инструменты для анализа, обработки и вычисления дат.

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

  • парсинг строк даты:

    from dateutil import parser
    
    date_str = "2023-07-14 12:34:56"
    date = parser.parse(date_str)
    print(date)  # 2023-07-14 12:34:56
  • релятивные дельты: Позволяют выполнять операции с датами, такие как добавление месяцев или дней.

    from datetime import datetime
    from dateutil.relativedelta import relativedelta
    
    now = datetime.now()
    one_year_later = now + relativedelta(years=1)
    print(one_year_later)  # Дата ровно через год от текущей даты

openpyxl

pip install openpyxl

openpyxl - это библиотека для чтения и записи файлов Excel (формата .xlsx).

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

  • Создание нового файла Excel и запись данных:

    from openpyxl import Workbook
    
    wb = Workbook()
    ws = wb.active
    
    ws['A1'] = 'Hello'
    ws['B1'] = 'World'
    
    wb.save("example.xlsx")
  • Чтение данных из файла Excel:

    from openpyxl import load_workbook
    
    wb = load_workbook("example.xlsx")
    ws = wb.active
    
    print(ws['A1'].value)  # Hello
    print(ws['B1'].value)  # World

pytest

pip install pytest

pytest - популярная библиотека для написания тестов в Python. Она поддерживает простое написание тестов, фикстуры, параметризацию тестов и многое другое.

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

  • Простой тест:

    def test_sum():
        assert sum([1, 2, 3]) == 6, "Should be 6"
  • Использование фикстур:

    import pytest
    
    @pytest.fixture
    def sample_list():
        return [1, 2, 3]
    
    def test_sum(sample_list):
        assert sum(sample_list) == 6, "Should be 6"
  • Параметризация тестов:

    @pytest.mark.parametrize("input,expected", [
        ([1, 2, 3], 6),
        ([1, 1, 1], 3),
        ([1, -1, 1], 1),
    ])
    def test_sum(input, expected):
        assert sum(input) == expected

Пакеты часто используемые в web

BeautifulSoup

BeautifulSoup — это библиотека для парсинга HTML и XML документов. Она создает дерево разбора из страниц, что позволяет легко извлекать данные из HTML и XML документов.

Установка:

pip install beautifulsoup4

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

from bs4 import BeautifulSoup

html_doc = """
<html>
 <head><title>The Dormouse's story</title></head>
 <body>
  <p class="title"><b>The Dormouse's story</b></p>
  <p class="story">Once upon a time there were three little sisters; and their names were
   <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
   <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
   <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
   and they lived at the bottom of a well.</p>
 </body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

print(soup.title.string)
# Output: The Dormouse's story

print(soup.find_all('a'))
# Output: [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

for link in soup.find_all('a'):
    print(link.get('href'))
# Output:
# http://example.com/elsie
# http://example.com/lacie
# http://example.com/tillie

Pillow

Pillow — это библиотека для работы с изображениями на Python. Она позволяет открывать, изменять, создавать и сохранять различные форматы изображений.

Установка:

pip install pillow

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

from PIL import Image

# Открыть изображение
image = Image.open('example.jpg')

# Показать изображение
image.show()

# Изменить размер изображения
resized_image = image.resize((200, 200))
resized_image.save('resized_example.jpg')

# Применить фильтр
from PIL import ImageFilter

filtered_image = image.filter(ImageFilter.BLUR)
filtered_image.save('blurred_example.jpg')

Scrapy

Scrapy — это фреймворк для веб-скрейпинга, который позволяет извлекать данные из веб-сайтов и обрабатывать их. Scrapy поддерживает различные методы обхода и парсинга веб-страниц.

Установка:

pip install scrapy

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

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
    ]

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('span small::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }

# Чтобы запустить паука, сохраните этот код в файл quotes_spider.py и выполните команду:
# scrapy runspider quotes_spider.py -o quotes.json

psycopg

psycopg2 - это популярная библиотека для работы с базой данных PostgreSQL в Python. Она позволяет выполнять запросы, управлять транзакциями и взаимодействовать с PostgreSQL.

Установка

Для установки psycopg2 можно использовать pip:

pip install psycopg2

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

Подключение к базе данных

import psycopg2

conn = psycopg2.connect(
    dbname="yourdbname",
    user="yourusername",
    password="yourpassword",
    host="yourhost",
    port="yourport"
)

Создание курсора и выполнение запросов

cur = conn.cursor()
cur.execute("SELECT version();")
db_version = cur.fetchone()
print(db_version)

Создание таблицы

create_table_query = '''
CREATE TABLE IF NOT EXISTS employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    salary NUMERIC
);
'''
cur.execute(create_table_query)
conn.commit()

Вставка данных в таблицу

insert_query = '''
INSERT INTO employees (name, salary) VALUES (%s, %s);
'''
cur.execute(insert_query, ('John Doe', 50000))
conn.commit()

Чтение данных из таблицы

select_query = '''
SELECT * FROM employees;
'''
cur.execute(select_query)
rows = cur.fetchall()
for row in rows:
    print(row)

Обновление данных

update_query = '''
UPDATE employees SET salary = %s WHERE name = %s;
'''
cur.execute(update_query, (55000, 'John Doe'))
conn.commit()

Удаление данных

delete_query = '''
DELETE FROM employees WHERE name = %s;
'''
cur.execute(delete_query, ('John Doe',))
conn.commit()

Закрытие курсора и соединения

cur.close()
conn.close()

Использование контекстных менеджеров

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

import psycopg2

with psycopg2.connect(
        dbname="yourdbname",
        user="yourusername",
        password="yourpassword",
        host="yourhost",
        port="yourport"
) as conn:
    with conn.cursor() as cur:
        cur.execute("SELECT version();")
        db_version = cur.fetchone()
        print(db_version)

Обработка исключений

При работе с базами данных важно обрабатывать возможные исключения:

import psycopg2
from psycopg2 import OperationalError, errorcodes, errors

try:
    conn = psycopg2.connect(
        dbname="yourdbname",
        user="yourusername",
        password="yourpassword",
        host="yourhost",
        port="yourport"
    )
    cur = conn.cursor()
    cur.execute("SELECT version();")
    db_version = cur.fetchone()
    print(db_version)
except OperationalError as e:
    print(f"The error '{e}' occurred")
finally:
    if conn:
        cur.close()
        conn.close()

Эти примеры показывают основные операции, которые можно выполнять с помощью psycopg2 для взаимодействия с базой данных PostgreSQL.

По сути этот случайный набор инструментов демонстрирует практически бесконечный функционал для работы с python

Pyenv

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

Основные возможности pyenv

  1. Установка различных версий Python:

    • pyenv позволяет установить любую версию Python, начиная с самых ранних версий до самых последних релизов, включая версии Anaconda и PyPy.
  2. Переключение между версиями Python:

    • Легко переключаться между установленными версиями Python для различных проектов.
  3. Глобальные и локальные версии Python:

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

    • В сочетании с pyenv-virtualenv можно управлять виртуальными окружениями Python, что делает разработку еще более гибкой.

Установка pyenv

На macOS и Linux:

Для установки pyenv на macOS и Linux выполните следующие команды:

curl https://pyenv.run | bash

Далее добавьте следующие строки в ваш профиль оболочки (например, .bashrc или .zshrc):

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

После этого перезапустите терминал или выполните source ~/.bashrc (или соответствующую команду для вашей оболочки).

На Windows:

Для Windows рекомендуется использовать pyenv-win, который является портом pyenv для Windows. Установка осуществляется через команду:

pip install pyenv-win --target %USERPROFILE%\.pyenv

Далее добавьте следующие пути в переменную окружения PATH:

setx PATH "%PATH%;%USERPROFILE%\.pyenv\pyenv-win\bin"
setx PATH "%PATH%;%USERPROFILE%\.pyenv\pyenv-win\shims"

Основные команды pyenv

  1. Установка Python:

    pyenv install 3.9.1

    Эта команда установит Python версии 3.9.1.

  2. Просмотр доступных версий для установки:

    pyenv install --list
  3. Установка глобальной версии Python:

    pyenv global 3.9.1

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

  4. Установка локальной версии Python:

    Внутри каталога проекта выполните:

    pyenv local 3.8.5

    Эта версия будет использоваться только внутри данного проекта.

  5. Переключение между версиями Python:

    pyenv shell 3.7.9

    Эта команда переключит версию Python только для текущей сессии оболочки.

Примеры использования

Пример 1: Установка и переключение между версиями

Установим две версии Python и переключимся между ними.

# Установка версий Python
pyenv install 3.8.5
pyenv install 3.9.1

# Установка глобальной версии Python
pyenv global 3.9.1

# Проверка текущей версии Python
python --version
# Output: Python 3.9.1

# Переключение на другую версию Python
pyenv shell 3.8.5

# Проверка текущей версии Python
python --version
# Output: Python 3.8.5

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

Создадим проект и установим для него локальную версию Python.

# Создание нового проекта
mkdir my_project
cd my_project

# Установка локальной версии Python для проекта
pyenv local 3.7.9

# Проверка текущей версии Python
python --version
# Output: Python 3.7.9

Домашка

  1. Создать виртуальное окружение
  2. Установить там psycopg2
  3. Для обоих ваших модулей, заменить файлы для хранения данных. На базы данных.

На этом месте мы наконец-то готовы переходить к материалу, ради которого все и затевалось.