अद्यतन उत्तर
यह करने का एक बेहतर तरीका है:
import subprocess
import sys
reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze'])
installed_packages = [r.decode().split('==')[0] for r in reqs.split()]
परिणाम:
print(installed_packages)
[
"Django",
"six",
"requests",
]
जांचें कि requests
क्या स्थापित है:
if 'requests' in installed_packages:
# Do something
इस तरह क्यों? कभी-कभी आपके पास ऐप का नाम टकराव होता है। ऐप नामस्थान से आयात करने से आपको सिस्टम पर स्थापित की गई पूरी तस्वीर नहीं मिलती है।
ध्यान दें, प्रस्तावित समाधान काम करता है:
- जब PyPI या किसी अन्य वैकल्पिक स्रोत (जैसे
pip install http://some.site/package-name.zip
या किसी अन्य संग्रह प्रकार) से स्थापित करने के लिए पाइप का उपयोग किया जाता है ।
- मैन्युअल रूप से स्थापित करते समय
python setup.py install
।
- सिस्टम रिपॉजिटरी से इंस्टॉल करते समय, जैसे
sudo apt install python-requests
।
काम नहीं होने पर मामले :
- विकास मोड में स्थापित करते समय, जैसे
python setup.py develop
।
- विकास मोड में स्थापित करते समय, जैसे
pip install -e /path/to/package/source/
।
पुराना उत्तर
यह करने का एक बेहतर तरीका है:
import pip
installed_packages = pip.get_installed_distributions()
पाइप के लिए> = 10.x का उपयोग करें:
from pip._internal.utils.misc import get_installed_distributions
इस तरह क्यों? कभी-कभी आपके पास ऐप का नाम टकराव होता है। ऐप नामस्थान से आयात करने से आपको सिस्टम पर स्थापित की गई पूरी तस्वीर नहीं मिलती है।
नतीजतन, आपको pkg_resources.Distribution
वस्तुओं की एक सूची मिलती है । एक उदाहरण के रूप में निम्नलिखित देखें:
print installed_packages
[
"Django 1.6.4 (/path-to-your-env/lib/python2.7/site-packages)",
"six 1.6.1 (/path-to-your-env/lib/python2.7/site-packages)",
"requests 2.5.0 (/path-to-your-env/lib/python2.7/site-packages)",
]
इसकी एक सूची बनाएं:
flat_installed_packages = [package.project_name for package in installed_packages]
[
"Django",
"six",
"requests",
]
जांचें कि requests
क्या स्थापित है:
if 'requests' in flat_installed_packages:
# Do something