रनटाइम पर मॉड्यूल संस्करण प्राप्त करने के लिए `pkg_resources` मॉड्यूल का उपयोग करें। PyPI से इंस्टॉल की गई किसी भी चीज़ में कम से कम एक संस्करण संख्या होनी चाहिए।
उदाहरण
>>> import pkg_resources
>>> pkg_resources.get_distribution("blogofile").version
'0.7.1'
महत्वपूर्ण नोट
पैकेज नाम PyPI एंट्री का होना चाहिए।
इसलिए `"pkg_resources.get_distribution('MySQLdb').version"` काम नहीं करेगा
लेकिन `"pkg_resources.get_distribution('mysql-python').version"` काम करेगा।
आधुनिक तरीका: importlib.metadata (पायथन 3.8+)
`pkg_resources` धीमा और भारी है। पायथन 3.8+ में, मानक लाइब्रेरी `importlib.metadata` का उपयोग करें:
import importlib.metadata
# संस्करण प्राप्त करें
version = importlib.metadata.version('requests')
print(version) # '2.31.0'
# सभी मेटाडेटा
metadata = importlib.metadata.metadata('requests')
print(metadata['Summary'])
print(metadata['Author'])
पायथन 3.10+ के लिए
# संस्करण (कम ओवरहेड)
importlib.metadata.version('package_name')
# एंट्री पॉइंट्स
importlib.metadata.entry_points(group='console_scripts')
# फाइलें
importlib.metadata.files('package_name')
फॉलबैक पैटर्न (सभी संस्करण)
def get_version(package_name):
"""किसी भी पायथन संस्करण पर पैकेज संस्करण प्राप्त करें।"""
try:
# पायथन 3.8+
import importlib.metadata
return importlib.metadata.version(package_name)
except (ImportError, ModuleNotFoundError):
try:
# पायथन 3.7 और पुराने
import pkg_resources
return pkg_resources.get_distribution(package_name).version
except Exception:
return None
# उपयोग
print(get_version('requests'))
print(get_version('numpy'))
print(get_version('nonexistent')) # None
मॉड्यूल के `__version__` एट्रिब्यूट से
कुछ मॉड्यूल `__version__` एट्रिब्यूट उजागर करते हैं:
import requests
print(requests.__version__) # यदि उपलब्ध हो
import numpy
print(numpy.__version__)
नोट: सभी मॉड्यूल में `__version__` नहीं होता। `importlib.metadata` अधिक विश्वसनीय है।
कमांड लाइन से
pip show requests | grep Version
python -c "import importlib.metadata; print(importlib.metadata.version('requests'))"