2015-02-13 18 views
35

W skrypcie powłoki sprawdzam, czy pakiety te są zainstalowane, czy nie, jeśli nie są zainstalowane, to zainstaluj je. Więc withing skrypt:jak sprawdzić, która wersja pakietu nltk, scikit learn jest zainstalowana?

import nltk 
echo nltk.__version__ 

ale zatrzymuje skrypt na import linii

w linux Terminal próbuje zobaczyć w ten sposób:

which nltk 

co daje nic myślał, że jest zainstalowany.

Czy istnieje inny sposób sprawdzenia instalacji tego pakietu w skrypcie powłoki, jeśli nie jest zainstalowany, również go zainstaluj.

+3

Dlaczego robisz to w skrypcie powłoki? Dlaczego nie robisz tego w pliku Pythona? – Ffisegydd

+0

@Ffisegydd: Mam jedną uogólnioną regułę, w której w skorupie sprawdzam wszystkie potrzebne pakiety, jeśli jakikolwiek pakiet nie istnieje, a następnie zainstaluj go w inny sposób przejdź do następnego sprawdzenia. Ponieważ muszę sprawdzić i wykonać kilka innych Pythona, a także skorupiaków, używam go. Czy używasz 'shellscript', ponieważ jest to zły pomysł? – nlper

+0

Znacznie łatwiej będzie przetestować te, używając skryptów Pythona (imo). Zawsze możesz wywołać skrypt Python ze skryptu powłoki, jeśli naprawdę chcesz. Jeśli po prostu użyjesz składni powłoki, musisz się dowiedzieć, gdzie znajduje się każdy pakiet, znaleźć pakiet, a następnie przeanalizować jego nazwę dla numerów wersji. – Ffisegydd

Odpowiedz

66

import nltk jest składnią Pythona i jako taka nie będzie działała w skrypcie powłoki.

Aby przetestować wersję nltk i scikit_learn, można napisać skrypt Pythona i uruchom go. Taki scenariusz może wyglądać

import nltk 
import sklearn 

print('The nltk version is {}.'.format(nltk.__version__)) 
print('The scikit-learn version is {}.'.format(sklearn.__version__)) 

# The nltk version is 3.0.0. 
# The scikit-learn version is 0.15.2. 

Należy pamiętać, że nie wszystkie pakiety Pythona są gwarantowane mieć atrybut __version__, więc dla niektórych innych może nie, ale dla NLTK i scikit-learn przynajmniej będzie działać.

+0

@Ffisgydd: \t dzięki, ale nie jest to możliwe, w celu sprawdzenia shellscript – nlper

23

Spróbuj tego:

$ python -c "import nltk; print nltk.__version__" 
+0

Dzięki, ale nie jest to możliwe do sprawdzenia w 'shellscript' – nlper

+4

@nlper, to jest całkowicie poprawny kod shell''. Nie widzę problemu z tą odpowiedzią. Zauważ, że możesz użyć 'var = $ ()', aby zapisać wyjście do zmiennej – cel

+2

@cel: sorry, rozumiem. Nie masz wystarczających środków, by odpowiedzieć na to pytanie:) – nlper

2

można znaleźć wersję NLTK prostu wykonując:

In [1]: import nltk 

In [2]: nltk.__version__ 
Out[2]: '3.2.5' 

i podobnie dla scikit-learn,

In [3]: import sklearn 

In [4]: sklearn.__version__ 
Out[4]: '0.19.0' 

Używam python3 tutaj .

+1

To działało dla mnie na Pythonie 3.5, nltk 3.2.2 na Windows 8 64 bit –

+0

To nie działało dla mnie w Pythonie 2.7, nltk 3.2.5 na Ubuntu 16.04 64 bit – abggcv

-1

W moim komputerze, który jest Ubuntu 14.04 z Pythona 2.7 zainstalowany, jeśli pójdę tu

/usr/local/lib/python2.7/dist-packages/nltk/ 

znajduje się plik o nazwie

VERSION.

Jeśli zrobię cat VERSION, wydrukuje 3.1, która jest zainstalowana w wersji NLTK.

2

Do sprawdzania wersji scikit-learn w skrypcie, jeśli pip zainstalowany, można spróbować tę komendę

pip freeze | grep scikit-learn 
scikit-learn==0.17.1 

nadzieję, że to pomaga!

2

Możesz po prostu spróbować

pip3 list 

i że daje listę jak ten

bleach (2.0.0) 
colorama (0.3.9) 
cycler (0.10.0) 
decorator (4.1.2) 
entrypoints (0.2.3) 
enum34 (1.1.6) 
graphviz (0.8) 
html5lib (0.999999999) 
ipykernel (4.6.1) 
ipython (6.1.0) 
ipython-genutils (0.2.0) 
ipywidgets (7.0.0) 
jedi (0.10.2) 
Jinja2 (2.9.6) 
    .......... 
PyYAML (3.12) 
pyzmq (16.0.2) 
qtconsole (4.3.1) 
scikit-learn (0.19.0) <------ 
scipy (0.19.1) 
setuptools (36.4.0) 
simplegeneric (0.8.1) 
    ....... 

można skanować listę znaleźć wersje wszystkich zainstalowanych pakietów ...

Powiązane problemy