Güncellenen cevap
Bunu yapmanın daha iyi bir yolu şudur:
import subprocess
import sys
reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze'])
installed_packages = [r.decode().split('==')[0] for r in reqs.split()]
Sonuç:
print(installed_packages)
[
"Django",
"six",
"requests",
]
requests
Kurulu olup olmadığını kontrol edin :
if 'requests' in installed_packages:
# Do something
Neden bu şekilde? Bazen uygulama adı çakışmalarınız olur. Uygulama ad alanından içe aktarmak, sistemde yüklü olanların tam resmini vermez.
Önerilen çözümün işe yaradığını unutmayın:
- PyPI'den veya başka herhangi bir alternatif kaynaktan (benzer
pip install http://some.site/package-name.zip
veya başka herhangi bir arşiv türü) yüklemek için pip kullanırken .
- Kullanarak manuel olarak kurarken
python setup.py install
.
- Sistem depolarından yüklerken, gibi
sudo apt install python-requests
.
Kılıflar o olabilir değil çalışır:
- Geliştirme modunda yüklerken, gibi
python setup.py develop
.
- Geliştirme modunda yüklerken, gibi
pip install -e /path/to/package/source/
.
Eski cevap
Bunu yapmanın daha iyi bir yolu şudur:
import pip
installed_packages = pip.get_installed_distributions()
Pip> = 10.x için kullanım:
from pip._internal.utils.misc import get_installed_distributions
Neden bu şekilde? Bazen uygulama adı çakışmalarınız olur. Uygulama ad alanından içe aktarmak, sistemde yüklü olanların tam resmini vermez.
Sonuç olarak, pkg_resources.Distribution
nesnelerin bir listesini alırsınız . Örnek olarak aşağıdakilere bakın:
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)",
]
Bir listesini yapın:
flat_installed_packages = [package.project_name for package in installed_packages]
[
"Django",
"six",
"requests",
]
requests
Kurulu olup olmadığını kontrol edin :
if 'requests' in flat_installed_packages:
# Do something