Каков рекомендуемый способ получить пакетную версию пакета в $PYTHONPATH или sys.path? Я помню, что модуль pkg_resource имеет некоторые функции для этого, но я не могу найти никакой связанной информации. Пожалуйста, не указывайте мне на решение, используя файл version.py и как-то прочитав его. Использование pkg_resources - путь, но как именно?
Получение версии пакета с помощью pkg_resources?
Ответ 1
>>> import pkg_resources
>>> pkg_resources.get_distribution("PIL").version
'1.1.7'
Ответ 2
Я нашел довольно ненадежным использование различных доступных инструментов (включая лучший pkg_resources
упомянутый в этом другом ответе), так как большинство из них не охватывает все случаи. Например, встроенные модули и модули не установлены, а просто добавлены в путь к Python (например, вашей IDE). Так как нам нужен был надежный способ получить версию любого пакета, модуля или субмодуля, я закончил писать getversion. Это довольно просто использовать:
from getversion import get_module_version
import foo
version, details = get_module_version(foo)
Смотрите документацию для деталей.