업데이트 된 답변
이를 수행하는 더 좋은 방법은 다음과 같습니다.
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
왜 이렇게? 때로는 앱 이름 충돌이 있습니다. 앱 네임 스페이스에서 가져 오는 것은 시스템에 설치된 항목의 전체 그림을 제공하지 않습니다.
제안 된 솔루션이 작동합니다.
- pip를 사용하여 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()
pip> = 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