Yanıtlar:
Sen kullanmalıdır pip
'ın list
tek listeleri (hepsi değil modülleri ve bunların komşuları yanı) paketleri yüklü olduğu, grep ile komutu:
pip list | grep -F package_name
Package_name birden fazla kurulu paketle eşleşiyorsa, örneğin boto
ne zaman botocore
kurulduğunu da aramak , @TaraPrasadGurung'un önerdiği gibi -w
bunun yerine kullanmak -F
yardımcı olabilir. Bu, -w
paket adlarında ortak olan karakterleri sözcük sınırları olarak gördüğünden tam paketi listelemez . Eğer varsa requests
ve requests-cache
yüklediyseniz veya ruamel.yaml
ruamel.yaml.cmd` ve tam olarak bir çıkış hattına ihtiyacınız varsa, aşağıdaki gibi bir şey yapmanız gerekir:
pip list --disable-pip-version-check | grep -E "^ruamel\.yaml "
.
Kullanırken herhangi bir karakterle eşleştiğinden -E
, kaçmanız gerektiğini lütfen unutmayın.
¹ Ve evet, bir paket olduğu için bu gerekli ruamel_yaml
. pip
Ad alanı paketleriyle uğraşırken her paket yöneticisi uyumlu değildir.
-w
kelime sınırları olarak alınır ve paket adlarında yaygındır. grep -w ruamel.yaml
Ya dagrep -w request
pip list | grep -F mxnet-cu101
yazdırır mxnet-cu101 1.5.0
, ancak tam olarak kurulduğu yere değil. yüklü yolu almak için herhangi bir fikir? `
Mevcut cevapların eksik olduğunu ve yeterince iyi örneklerin bulunmadığını tespit ettim. İşte çözdüğüm çözüm:
# 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
Bu örneğin bir Github özeti burada bulunabilir: https://gist.github.com/shaypal5/d505af9953cd86f59c750fa600ee4ba6
Komut dosyalarınızda böyle bir şey de kullanabilirsiniz.
python -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('$Package') else 1)"
Bir paket kurulu olmadığında ne alacaksınız.
Package=psutil
python3 -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('$Package') else 1)"
echo $?
1
Bir paket kurulduğunda ne alacaksınız.
Package=requests
python3 -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('$Package') else 1)"
echo $?
0
Python2 ve python3'te çalışır ve sonra çıkış koduna göre yüklersiniz.
Bir komut dosyasında kullanmak için Anthon'un cevabının biraz daha katı bir sürümünü kullandım:
pip3 list |
grep -v "^Package *Version$" | grep -v "^-*$" |
cut -d ' ' -f 1 |
grep -xF "$package_name"
İlk iki açılma, başlık hatlarını pip3'ün çıkışından ayırmak için tasarlanmıştır.
Daha sonra kesim yalnızca paket adlarını seçer (sürüm numaralarını atarak).
Daha sonra son grep, ilgili $package_name
Paket bulunursa, paket adını görüntüler ve çıkış kodu 0 ile döner. Paket adını görmek istemiyorsanız, komutu sonlandırın. >/dev/null
Python kabuğunda / isteminde. :
>>> help('modules')
Pip3 ile test edilmiştir:
$> pip3 show MODULENAME
Modülün kurulu olması durumunda çıkış kodu ($?) "0", aksi takdirde "1" olur.
Grepping'in "yanlış pozitifler" sorunu vardır:
pip list | grep NAME
adında "NAME" bulunan herhangi bir modülde eşleşir, örneğin "some_other_NAME" ile eşleşir.
Süre
pip3 show MODULENAME
sadece tam maçlarda eşleşir.
pip install
. Zaten kuruluysa, tekrar kurmaz.