किसी विशेष पैकेज से एप्लिकेशन में उपयोग किए जा रहे सभी पायथन मॉड्यूल ढूंढने के लिए, आप `sys.modules` डिक्ट का उपयोग कर सकते हैं। `sys.modules` मॉड्यूल नामों को मॉड्यूल पर मैप करने वाला एक डिक्शनरी है। आप इसकी कुंजियों की जांच करके इम्पोर्ट किए गए मॉड्यूल देख सकते हैं।
उदाहरण
>>> from datetime import datetime
>>> import sys
>>> print(sys.modules.keys())
['copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site',
'__builtin__', 'datetime', 'sysconfig', 'operator', '__main__', 'types',
'encodings.encodings', 'abc', 'encodings.cp437', '_weakrefset', 'errno',
'encodings.codecs', 'backports', 'sre_constants', 're', '_abcoll', 'ntpath',
'_codecs', 'zope', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport',
'encodings.__builtin__', 'mpl_toolkits', 'warnings', 'UserDict',
'encodings.cp1252', 'sys', 'codecs', 'os.path', '_functools', '_locale',
'signal', 'traceback', 'linecache', 'encodings.aliases', 'exceptions',
'sre_parse', 'os', '_weakref']
वैकल्पिक: python -v (वर्बोज मोड)
आप `python -v` का भी उपयोग कर सकते हैं, जो हर इम्पोर्ट किए गए मॉड्यूल के बारे में संदेश उत्सर्जित करेगा। उदाहरण के लिए, यदि आपके पास `hello.py` में पायथन कोड है, तो:
$ python -v hello.py
बेहतर दृष्टिकोण: विशिष्ट पैकेज के लिए फ़िल्टर करें
import sys
def get_imported_from_package(package_prefix):
"""निर्दिष्ट पैकेज प्रीफिक्स से इम्पोर्ट किए गए मॉड्यूल लौटाएं।"""
return [name for name in sys.modules
if name.startswith(package_prefix + '.') or name == package_prefix]
# उपयोग
import django
import django.db
import django.template
import requests
print(get_imported_from_package('django'))
# ['django', 'django.db', 'django.template']
रनटाइम इम्पोर्ट ट्रैकिंग
import sys
class ImportTracker:
def __init__(self):
self.imported_before = set(sys.modules.keys())
def get_new_imports(self):
current = set(sys.modules.keys())
new = current - self.imported_before
self.imported_before = current
return sorted(new)
# उपयोग
tracker = ImportTracker()
# कुछ कोड जो मॉड्यूल इम्पोर्ट करता है
import json
import requests
print(tracker.get_new_imports())
# ['json', 'requests', 'urllib3', ...]
स्थैतिक विश्लेषण टूल्स
- pydeps - मॉड्यूल निर्भरता ग्राफ विज़ुअलाइज़ करें
- snakefood - इम्पोर्ट निर्भरता विश्लेषण
- import-linter - इम्पोर्ट अनुबंध लागू करें
- pyan - कॉल ग्राफ विश्लेषण
pydeps उदाहरण
pip install pydeps
pydeps mypackage --max-bacon=2 --show-deps