프로그램을 실행하기 전에 프로그램이 설치되어 있는지 확인해야 합니다.
답변1
pip
설치된 패키지만 나열하는 grep과 함께 의 명령을 사용해야 합니다 list
(모든 모듈과 인접 패키지가 아님).
pip list | grep -F package_name
package_name이 설치된 여러 패키지와 일치하는 경우(예: " 설치 boto
시 " 검색) @TaraPrasadGurung이 제안한 대로 대신 사용하면 도움이 될 수 있습니다. 패키지 이름에 공통적으로 사용되는 문자는 단어 경계로 처리되므로 정확한 패키지가 나열되지 않습니다 . 따라서 ruamel.yaml.cmd`를 설치 했고 필요한 경우botocore
-w
-F
-w
requests
requests-cache
ruamel.yaml
정확히 한 줄의 출력다음과 같은 작업을 수행해야 합니다.
pip list --disable-pip-version-check | grep -E "^ruamel\.yaml "
.
사용 시 모든 문자와 일치 하므로 -E
이스케이프해야 합니다.
예 , 패키지가 있으므로 필요합니다.ruamel_yaml
pip
. 네임스페이스 패키지를 처리할 때 모든 패키지 관리자가 호환되는 것은 아닙니다 .
답변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