Python3에 모듈이나 패키지가 이미 설치되어 있는지 확인하는 방법은 무엇입니까?

Python3에 모듈이나 패키지가 이미 설치되어 있는지 확인하는 방법은 무엇입니까?

프로그램을 실행하기 전에 프로그램이 설치되어 있는지 확인해야 합니다.

답변1

pip설치된 패키지만 나열하는 grep과 함께 의 명령을 사용해야 합니다 list(모든 모듈과 인접 패키지가 아님).

pip list | grep -F package_name

package_name이 설치된 여러 패키지와 일치하는 경우(예: " 설치 boto시 " 검색) @TaraPrasadGurung이 제안한 대로 대신 사용하면 도움이 될 수 있습니다. 패키지 이름에 공통적으로 사용되는 문자는 단어 경계로 처리되므로 정확한 패키지가 나열되지 않습니다 . 따라서 ruamel.yaml.cmd`를 설치 했고 필요한 경우botocore-w-F-wrequestsrequests-cacheruamel.yaml정확히 한 줄의 출력다음과 같은 작업을 수행해야 합니다.

pip list --disable-pip-version-check | grep -E "^ruamel\.yaml "

.사용 시 모든 문자와 일치 하므로 -E이스케이프해야 합니다.


, 패키지가 있으므로 필요합니다.ruamel_yamlpip. 네임스페이스 패키지를 처리할 때 모든 패키지 관리자가 호환되는 것은 아닙니다 .

답변2

패키지를 가져올 때 이상하거나 시간 소모적인 작업을 수행하지 않으면 실제로 가져오기를 시도해 볼 수 있습니다.

if python -c "import package_name" &> /dev/null; then
    echo 'all good'
else
    echo 'uh oh'
fi

답변3

pip3을 사용하여 테스트:

$> pip3 show MODULENAME

모듈이 설치된 경우 종료 코드($?)는 "0"이고 그렇지 않으면 "1"입니다.

Grepping에는 "거짓양성" 문제가 있습니다.

pip list | grep NAME

이름에 "NAME"이 포함된 모든 모듈과 일치합니다(예: "some_other_NAME").

하지만

pip3 show MODULENAME

완전한 일치만 일치시킵니다.

답변4

기존 답변이 불완전하고 충분한 예가 부족하다는 것을 알았습니다. 제가 결정한 해결책은 다음과 같습니다.

# an example checking if the pandas package is installed
if python -c 'import pkgutil; exit(not pkgutil.find_loader("pandas"))'; then
    echo 'pandas found'
else
    echo 'pandas not found'
fi

이 예제에 대한 Github 요점은 여기에서 찾을 수 있습니다.https://gist.github.com/shaypal5/d505af9953cd86f59c750fa600ee4ba6

관련 정보