답변:
현재 핍 1.3 하는이 pip show
명령.
$ pip show Jinja2
---
Name: Jinja2
Version: 2.7.3
Location: /path/to/virtualenv/lib/python2.7/site-packages
Requires: markupsafe
이전 버전에서, pip freeze
그리고 grep
멋지게 일을해야한다.
$ pip freeze | grep Jinja2
Jinja2==2.7.3
save
이름을 사용 합니다.
pip show pip
보다 pip의 버전 정보를 얻기 위해 입력 할 수 있습니다 pip --version
.
pip freeze
편집 가능한 VCS 체크 아웃 버전을 올바르게 표시하지만 pip show
그렇지 않은 장점이 있습니다 .
휴고 타바레스 (Hugo Tavares)는 다음과 같이 개선 된 pip로 pull 요청을 보냈습니다.
(예 : specloud)
$ pip show specloud
Package: specloud
Version: 0.4.4
Requires:
nose
figleaf
pinocchio
Pip 1.3에는 이제 list 명령이 있습니다.
$ pip list
argparse (1.2.1)
pip (1.5.1)
setuptools (2.1)
wsgiref (0.1.2)
pip list
일반적 __version__
이며 그렇지 않습니다. 또한 본 version()
과 get_version()
하나를 가져옵니다.
추가 인수로 --outdated를 사용하면 사용중인 패키지의 현재 및 최신 버전을 얻을 수 있습니다.
$ pip list --outdated
distribute (Current: 0.6.34 Latest: 0.7.3)
django-bootstrap3 (Current: 1.1.0 Latest: 4.3.0)
Django (Current: 1.5.4 Latest: 1.6.4)
Jinja2 (Current: 2.6 Latest: 2.8)
따라서 AdamKG의 답변과 결합 :
$ pip list --outdated | grep Jinja2
Jinja2 (Current: 2.6 Latest: 2.8)
pip-tools 도 확인하십시오 : https://github.com/nvie/pip-tools
당신은 또한 좋은 출력을 제공 설치 yolk
하고 실행할 수 있습니다 yolk -l
. 여기 내 작은 virtualenv에 대해 얻는 것이 있습니다.
(venv)CWD> /space/vhosts/pyramid.xcode.com/venv/build/unittest
project@pyramid 43> yolk -l
Chameleon - 2.8.2 - active
Jinja2 - 2.6 - active
Mako - 0.7.0 - active
MarkupSafe - 0.15 - active
PasteDeploy - 1.5.0 - active
Pygments - 1.5 - active
Python - 2.7.3 - active development (/usr/lib/python2.7/lib-dynload)
SQLAlchemy - 0.7.6 - active
WebOb - 1.2b3 - active
account - 0.0 - active development (/space/vhosts/pyramid.xcode.com/project/account)
distribute - 0.6.19 - active
egenix-mx-base - 3.2.3 - active
ipython - 0.12 - active
logilab-astng - 0.23.1 - active
logilab-common - 0.57.1 - active
nose - 1.1.2 - active
pbkdf2 - 1.3 - active
pip - 1.0.2 - active
pyScss - 1.1.3 - active
pycrypto - 2.5 - active
pylint - 0.25.1 - active
pyramid-debugtoolbar - 1.0.1 - active
pyramid-tm - 0.4 - active
pyramid - 1.3 - active
repoze.lru - 0.5 - active
simplejson - 2.5.0 - active
transaction - 1.2.0 - active
translationstring - 1.1 - active
venusian - 1.0a3 - active
waitress - 0.8.1 - active
wsgiref - 0.1.2 - active development (/usr/lib/python2.7)
yolk - 0.4.3 - active
zope.deprecation - 3.5.1 - active
zope.interface - 3.8.0 - active
zope.sqlalchemy - 0.7 - active
가장 쉬운 방법은 다음과 같습니다.
import jinja2
print jinja2.__version__
__version__
소스 코드에 정의 된 패키지에만 적용됩니다 . 많은 패키지는 그렇지 않습니다.
import
과 출력 사이의 이름 불일치 (최소 3 가지 유형)를 패키지화하는 데 강력하지 않습니다 pip freeze
.
python 함수는 기계가 읽을 수있는 형식으로 패키지 버전 만 반환합니다.
from importlib.metadata import version
version('numpy')
파이썬 3.8 이전 :
pip install importlib-metadata
from importlib_metadata import version
version('numpy')
bash에 상응하는 (여기서는 파이썬에서 호출) 훨씬 더 복잡하지만 (보다 강력합니다-아래주의 참조)
import subprocess
def get_installed_ver(pkg_name):
bash_str="pip freeze | grep -w %s= | awk -F '==' {'print $2'} | tr -d '\n'" %(pkg_name)
return(subprocess.check_output(bash_str, shell=True).decode())
샘플 사용법 :
# pkg_name="xgboost"
# pkg_name="Flask"
# pkg_name="Flask-Caching"
pkg_name="scikit-learn"
print(get_installed_ver(pkg_name))
>>> 0.22
참고이 두 경우 모두 pkg_name
에 의해 반환되는 형식으로 패키지 이름을 포함해야 매개 변수 pip freeze
와 같은 동안 사용하지 import
, 예를 들어 scikit-learn
하지 sklearn
나 Flask-Caching
하지 flask_caching
.
pip freeze
bash 버전 을 호출하는 것은 비효율적 인 것처럼 보일 수 있지만이 방법만이 패키지 이름 지정 특성 및 불일치 (예 : 밑줄 대 대시, 작은 대 대문자 및 sklearn
vs 와 같은 약어)를 패키지화하는 데 충분히 강력하다는 것을 알 수 있습니다 scikit-learn
.
주의 : 복잡한 환경에서는 두 가지 변형 모두 실제로 얻을 수있는 것과 일치하지 않는 놀라운 버전 번호를 반환 할 수 있습니다. import
.
사용자 site-packages
하위 폴더 에 다른 버전의 패키지가 숨겨져있는 경우 이러한 문제가 발생합니다 . version()
여기 에 사용하는 위험에 대한 그림으로 내가 만난 상황이 있습니다.
$ pip freeze | grep lightgbm
lightgbm==2.3.1
and
$ python -c "import lightgbm; print(lightgbm.__version__)"
2.3.1
vs.
$ python -c "from importlib_metadata import version; print(version(\"lightgbm\"))"
2.2.3
until you delete the subfolder with the old version (here 2.2.3) from the user folder (only one would normally be preserved by `pip` - the one installed as last with the `--user` switch):
$ ls /home/jovyan/.local/lib/python3.7/site-packages/lightgbm*
/home/jovyan/.local/lib/python3.7/site-packages/lightgbm-2.2.3.dist-info
/home/jovyan/.local/lib/python3.7/site-packages/lightgbm-2.3.1.dist-info
또 다른 문제점은 동일한 환경에 일부 conda 설치 패키지가 있다는 것입니다. 이들이 pip 설치 패키지와 종속성을 공유하고 이러한 종속성 버전이 다른 경우 pip 설치 종속성의 다운 그레이드가 발생할 수 있습니다.
예를 들어 numpy
04-01-2020의 PyPI에서 사용 가능한 최신 버전 은 1.18.0이며 동시에 Anaconda의 conda-forge
채널은 numpy
최신 버전으로 1.17.3 버전 만 사용했습니다 . 따라서 basemap
conda (두 번째)로 패키지 를 설치하면 이전에 설치된 pip가 설치된 numpy
conda에 의해 1.17.3으로 다운 그레이드되고 버전 1.18.0은이 import
기능을 사용할 수 없게됩니다 . 이 경우 version()
권리, 그리고 것 pip freeze
/ conda list
잘못 :
$ python -c "from importlib_metadata import version; print(version(\"numpy\"))"
1.17.3
$ python -c "import numpy; print(numpy.__version__)"
1.17.3
$ pip freeze | grep numpy
numpy==1.18.0
$ conda list | grep numpy
numpy 1.18.0 pypi_0 pypi
importlib.metadata.version('NameOfProject')
않습니까? docs.python.org/3/library/…
from importlib_metadata import version; version('Flask-Caching')
python -c "import pkg_resources; print(pkg_resources.get_distribution('lightgbm').version)"
있습니까?
version()
가장 오래된 (가장 오래된) 버전 (2.2.3)을 반환 할 때 최신 버전 (2.3.1)이 정답 입니다. --user
스위치를 사용하여 두 버전을 모두 설치 하지만 수동으로 lightgbm-2.2.3.dist-info
폴더를 보존하여 위에 나열된 것처럼 두 버전을 함께 사용하면이 결과를 복제 할 수 있습니다 (pip는 일반적으로 제거하지 않을 때까지 제거합니다).
pip show는 Python 3.7에서 작동합니다.
pip show selenium
Name: selenium
Version: 4.0.0a3
Summary: Python bindings for Selenium
Home-page: https://github.com/SeleniumHQ/selenium/
Author: UNKNOWN
Author-email: UNKNOWN
License: Apache 2.0
Location: c:\python3.7\lib\site-packages\selenium-4.0.0a3-py3.7.egg
Requires: urllib3
Required-by:
파이썬 코드를 사용하여이를 수행하려면 :
importlib.metadata.version
import importlib.metadata
importlib.metadata.version('beautifulsoup4')
'4.9.1'
(사용 importlib_metadata.version
)
!pip install importlib-metadata
import importlib_metadata
importlib_metadata.version('beautifulsoup4')
'4.9.1'
pkg_resources.Distribution
import pkg_resources
pkg_resources.get_distribution('beautifulsoup4').version
'4.9.1'
pkg_resources.get_distribution('beautifulsoup4').parsed_version
<Version('4.9.1')>
sinoroc 및 mirekphd의 의견에 감사 를 표 합니다.
pip install
와 밑줄을 필요로하는 레거시 파이썬 버전에 대한 정보로 자신을 향상시킬 수 있습니다 . 내에서 그대로 복사하거나 일관성 numpy
을 beautifulsoup4
위해 변경 할 수 있습니다.
show
pip에 명령에 대한 제안이 있습니다 : github.com/pypa/pip/issues/33