Как проверить версию библиотеки python
Перейти к содержимому

Как проверить версию библиотеки python

  • автор:

Python, pip: Как посмотреть зависимости конкретной версии модуля перед установкой

Подскажите, пожалуйста, лучший способ посмотреть список зависимостей для конкретного модуля перед установкой. Допустим у меня есть проект на Python3.7 где есть определенный список модулей разных версий. Мне необходимо добавить модуль pdfplumber. Но мне необходимо установить такую версию, что бы существующие модули не конфликтовали и не повышались в версии. Как мне лучше всего просмотреть список зависимостей, перед установкой ? За ранее спасибо!

Отслеживать
задан 26 апр 2023 в 9:45
23 4 4 бронзовых знака

Чтобы увидеть зависимости какого либо модуля перед установкой, можно попробовать использовать pip show <имя модуля>(например, pip show pdfplumber ). А чтобы увидеть зависимости всех установленных модулей, можно ввести pip freeze

26 апр 2023 в 9:49
поправляю себя, pip show работает только в случаях когда пакет уже установлен.
26 апр 2023 в 9:53
Вот в этом и вопрос. Эта команда не подходит. Есть ли способ проверить перед установкой ?
26 апр 2023 в 9:57

Можно попробовать использовать pip download для скачивания пакета напрямую и их зависимостей вместе без установки

26 апр 2023 в 9:57

1 ответ 1

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

Вариант 1 — смотрим json через pypi.org

Делаем запрос по имени библиотеки и версии, в данном случае

https://pypi.org/pypi/pdfplumber/0.9.0/json 

в Json находим параметр «requires_dist» :

"requires_dist": [ "pdfminer.six (==20221105)", "Pillow (>=9.1)", "Wand (>=0.6.10)" ] 

Вариант 2 — для Windows

Хорошим методом будет являться скачивание модуля в виде архива и просмотр файла requirements.txt . Для этого можно воспользоваться командой в powershell :

pip download pdfplumber --no-deps --no-binary=:all: 

После этого откройте скачанный архив и найдите там файл requirements.txt В моем случае внутри он выглядит так:

pdfminer.six==20221105 Pillow>=9.1 Wand>=0.6.10 

UPD.0 Если убрать из команды —no-deps , то возможно скачивание сразу и зависимых библиотек, но это приведет к их установке.

UPD.1 Для скачивания архива для последующего нахождения зависимостей конкретной версии библиотеки, можно действовать так:

pip download pdfplumber== --no-deps --no-binary=:all: 

Где — это версия вашей библиотеки, соответственно.

UPD.2 Для нахождения зависимостей зависимостей, откройте первый requirements.txt и повторите операцию по скачиванию файла архива библиотеки для каждой зависимости, затем откройте их собственные requirements.txt если таковые имеются.

Действия с библиотеками в образах Jupyter Server

В каждом образе Jupyter Server и базовом образе для задач обучения есть предустановленный набор библиотек (см. Список образов для Jupyter Server , Библиотеки в базовых образах для деплоев ).

В инструкции описано, как узнать, какие библиотеки установлены, как установить и обновить библиотеки.

Получение списка библиотек, установленных в образе Jupyter Server

Чтобы увидеть список библиотек, установленных в образе Jupyter Server:

  1. Создайте или подключитесь к уже существующему Jupyter Notebook.
  2. В ячейке Jupyter Notebook выполните следующую команду:

pip list

Получение списка библиотек, установленных в базовом образе

Чтобы увидеть список библиотек, установленных в базовых образах, выполните последовательность действий, как описано в разделе Актуализация списка библиотек в базовых образах .

Установка дополнительных библиотек в Jupyter Server

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

!pip install

Где package_name — наименование библиотеки, которую предполагается установить, а version — версия данной библиотеки.

После установки библиотеки выполните следующую команду для проверки:

!pip list | grep

В Jupyter Server есть каталоги, в которых хранятся служебные и пользовательские файлы:

  • /home/user — каталог, уникальный для каждого Jupyter Server.
  • /home/jovyan — каталог, общий для всех Jupyter Server, созданных в рамках одного воркспейса.

Если устанавливать библиотеки с помощью команды pip install , то зависимости будут установлены в каталог /home/jovyan/.img-xxxxx .

При постановке Jupyter Server на паузу этот каталог остается, при остановке (удалении) каталог удаляется. При удалении Jupyter Server все библиотеки, которые установлены с помощью команды pip install , удаляются вместе с каталогом /home/user .

Для использования требуемого набора библиотек можно создать и использовать кастомный Docker-образ. Подробнее см. Способ 1. Обучение из Jupyter Server с GPU .

Jupyter Server называется test-img-dir , в нем командой pip install glances установили библиотеку. Установленная библиотека с требуемыми зависимостями будет находиться в каталоге /home/jovyan/.imgenv-test-img-dir-0/lib/python3.7/site-packages .

Обратите внимание на то, что в образ Jupyter Server jupyter-cuda10.1-tf2.3.0-gpu можно дополнительно установить библиотеку DeepSpeed. Для этого:

  1. Создайте или подключитесь к уже существующему Jupyter Notebook.
  2. Запустите командную строку ( New → Terminal ).
  3. Выполните команду ниже. Библиотека установится в соответствующий каталог.
cd /tmp && git clone https://github.com/microsoft/DeepSpeed.git && cd DeepSpeed && \ pip install cpufeature && \ DS_BUILD_SPARSE_ATTN=1 DS_BUILD_CPU_ADAM=1 /tmp/DeepSpeed/install.sh

Установка дополнительных библиотек в базовый образ

Пользователи могут установить дополнительные библиотеки в базовые образы. Для сборки таких кастомных образов используются средства функции client_lib . Подробнее см. Способ 1. Обучение из Jupyter Server с GPU .

Обновление версий библиотек в Jupyter Server

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

pip install --upgrade

Ранее установленная версия библиотеки обновится.

Пример переустановки версии torch приведен ниже.

pip install --no-cache-dir torch===1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

Не рекомендуется менять версию базовых пакетов — Horovod, TensorFlow, Apex, MXNet, TensorBoard, KServe, PyTorch.

Обновление версий библиотек в базовых образах

Для обновления версий библиотек, установленных в базовом образе, внесите модули и их версии в файл requirements.txt и соберите кастомный образ с использованием этого файла. Подробнее см. Способ 1. Обучение из Jupyter Server с GPU .

Актуализация списка библиотек в базовых образах

Список базовых образов и версий предустановленных библиотек в данных образах может периодически обновляться (См. Образы для Jupyter Server ). Пользователи могут получить перечень актуальных версий библиотек. Для этого необходимо выполнить последовательность действий, описанную ниже.

  1. Создайте или подключитесь к уже существующему Jupyter Notebook.
  2. Выберите подключение к Jupyter Notebook или JupyterLab. Рабочий каталог, из которого будут запускаться файлы, — /home/jovyan/ .
  3. Создайте в рабочем каталоге файл test.py следующего содержания:

import subprocess if __name__ == '__main__': cmd = 'pip freeze' subprocess.run(cmd, shell=True) 
import client_lib 
job = client_lib.Job(base_image='your base image', script = '/home/jovyan/test.py', n_workers=1, instance_type='your isntance_type', processes_per_worker=1 ) 

Для получения значения instance_type воспользуйтесь инструкцией .

job.submit() 
import time while True: job.logs() time.sleep(5) 
  • Создать Jupyter Server
  • Образы для Jupyter Server
  • Образы для деплоев
  • Образы для задач обучения

Стандартная библиотека¶

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

Рассмотрим некоторые наиболее часто используемые модули этой библиотеки. Детальное описание всех модулей стандартной библиотеки Python можно найти в разделе «Library Reference» документации, входящей в комплект поставки Python.

Давайте изучим несколько полезных модулей.

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

Модуль sys¶

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

Предположим, нам нужно узнать версию используемой команды Python с тем, чтобы, к примеру, убедиться в том, что мы используем как минимум версию 3. Модуль sys предоставляет такую возможность.

1 2 3 4 5
>>> import sys >>> sys.version_info (3, 0, 0, 'beta', 2) >>> sys.version_info[0] >= 3 True 

Как это работает:

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

Сохраните как versioncheck.py :

1 2 3 4 5 6 7
import sys, warnings if sys.version_info[0]  3: warnings.warn("Для выполнения этой программы необходима как минимум \ версия Python 3.0", RuntimeWarning) else: print('Нормальное продолжение') 

Вывод:

1 2 3 4 5 6
$ python2.7 versioncheck.py versioncheck.py:6: Для выполнения этой программы необходима как минимум версия Python 3.0 RuntimeWarning) $ python3 versioncheck.py Нормальное продолжение 

Как это работает:

Мы используем один из модулей стандартной библиотеки, который называется warnings и служит для отображения предупреждений пользователю. Если версия Python менее 3, мы показываем соответствующее предупреждение.

Модуль logging¶

Представьте ситуацию, когда необходимо сохранить некоторые отладочные или другие важные сообщения где-нибудь, чтобы иметь возможность позже проверить, отработала ли программа, как ожидалось. Как мы «сохраним где-нибудь» эти сообщения? Сделать это можно при помощи модуля logging .

Сохраните как use_logging.py :

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
import os, platform, logging if platform.platform().startswith('Windows'): logging_file = os.path.join(os.getenv('HOMEDRIVE'), os.getenv('HOMEPATH'), 'test.log') else: logging_file = os.path.join(os.getenv('HOME'), 'test.log') print("Сохраняем лог в", logging_file) logging.basicConfig( level=logging.DEBUG, format='%(asctime)s : %(levelname)s : %(message)s', filename = logging_file, filemode = 'w', ) logging.debug("Начало программы") logging.info("Какие-то действия") logging.warning("Программа умирает") 

Вывод:

$ python3 use_logging.py Сохраняем лог в C:\Users\swaroop\test.log 

Если открыть файл test.log , он будет выглядеть примерно так:

1 2 3
2012-10-26 16:52:41,457 : DEBUG : Начало программы 2012-10-26 16:52:41,474 : INFO : Какие-то действия 2012-10-26 16:52:41,475 : WARNING : Программа умирает 

Как это работает:

Мы использовали три модуля из стандартной библиотеки: модуль os для взаимодействия с операционной системой, модуль platform для получения информации о платформе (т.е. операционной системе) и модуль logging для сохранения лога 1 .

Прежде всего, при помощи строки, возвращаемой функцией platform.platform() мы проверяем, какая операционная система используется (для более подробной информации см. import platform; help(platform) ). Если это Windows, то мы определяем диск, содержащий домашний каталог, путь к домашнему каталогу на нём и имя файла, в котором хотим сохранить информацию. Сложив все эти три части, мы получаем полный путь к файлу. Для других платформ нам нужно знать только путь к домашнему каталогу пользователя, и мы получим полный путь к файлу.

При помощи функции os.path.join() мы объединяем три части пути к файлу вместе. Мы используем эту функцию вместо простого объединения строк для того, чтобы гарантировать, что полный путь к файлу записан в формате, ожидаемом операционной системой.

Далее мы конфигурируем модуль logging таким образом, чтобы он записывал все сообщения в определённом формате в указанный файл.

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

Модули urllib и json¶

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#!/usr/bin/python # Filename: yahoo_search.py import sys if sys.version_info[0] != 3: sys.exit('This program needs Python 3.0') import json import urllib, urllib.parse, urllib.request, urllib.response # Get your own APP ID at http://developer.yahoo.com/wsregapp/ YAHOO_APP_ID = 'jl22psvV34HELWhdfUJbfDQzlJ2B57KFS_qs4I8D0Wz5U5_yCI1Awv8.lBSfPhwr' SEARCH_BASE = 'http://search.yahooapis.com/WebSearchService/V1/webSearch' class YahooSearchError(Exception): pass # Taken from http://developer.yahoo.com/python/python-json.html def search(query, results=20, start=1, **kwargs): kwargs.update( 'appid': YAHOO_APP_ID, 'query': query, 'results': results, 'start': start, 'output': 'json' >) url = SEARCH_BASE + '?' + urllib.parse.urlencode(kwargs) result = json.load(urllib.request.urlopen(url)) if 'Error' in result: raise YahooSearchError(result['Error']) return result['ResultSet'] query = input('What do you want to search for? ') for result in search(query)['Result']: print("  : ".format(result['Title'], result['Url'])) 

Резюме¶

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

Далее мы обратимся к некоторым аспектам, которые сделают вашу экскурсию по Python более «завершённой».

  1. log — англ. «журнал», «вести журнал» (прим.перев.) ↩

Python 3: Как узнать версию библиотеки Pandas, Numpy

Вариант 1. Узнаем версию библиотеки в скрипте Python

Для того, чтобы узнать версию библиотеки, необходимо вбить следующую команду (например для Pandas):

import pandas as pd print (pd.__version__)

Пример для Numpy:

import numpy as np print (np.__version__)

Вариант 2. Проверить с помощью pip менеджера пакетов

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

  • pip list
  • pip freeze
  • pip show pandas

pip list

Выведет список установленных пакетов, включая редактируемые.

Пишем в консоли команду:

pip list

Результат:

pip freeze

Выводит установленные пакеты, которые ВЫ установили с помощью команды pip (или pipenv при ее использовании) в формате требований.

Вы можете запустить: pip freeze > requirements.txt на одной машине, а затем на другой машине (в чистой среде) произвести инсталляцию пакетов: pip install -r requirements.txt .

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

Результат:

pip show

Выводит информацию об одном или нескольких установленных пакетах.

Пример:

pip show pandas

Результат:

Anaconda — conda list

Если вы используете Anaconda, то вы можете проверить список установленных пакетов в активной среде с помощью команды conda list .

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

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