2016-03-29 16 views

Trả lời

7

Nó không có thông tin phiên bản, chỉ cần sử dụng .version:

In [4]: pyodbc.version 
Out[4]: '3.0.10' 

Lệnh hiển thị pip cũng sẽ nhận được nó cho bạn:

In [54]: pip.main(["show","pyodbc"]) 
--- 
Metadata-Version: 1.1 
Name: pyodbc 
Version: 3.0.10 
Summary: DB API Module for ODBC 
Home-page: http://code.google.com/p/pyodbc 
Author: Michael Kleehammer 
Author-email: [email protected] 
License: MIT 
Location: /usr/local/lib/python2.7/dist-packages 
Requires: 
Classifiers: 
    Development Status :: 5 - Production/Stable 
    Intended Audience :: Developers 
    Intended Audience :: System Administrators 
    License :: OSI Approved :: MIT License 
    Operating System :: Microsoft :: Windows 
    Operating System :: POSIX 
    Programming Language :: Python 
    Programming Language :: Python :: 2 
    Programming Language :: Python :: 3 
    Topic :: Database 
Out[54]: 0 

Bạn có thể chuyển hướng stdout và phân tích kết quả:

import pip 
import sys 

if sys.version_info.major >= 3: 
    from io import StringIO 
else: 
    from StringIO import StringIO 


def get_version(package): 
    f = StringIO() 
    sys.stdout = f 
    pip.main(["show", package]) 
    sys.stdout = sys.__stdout__ 
    return next((line.split(":", 1)[1].strip() 
       for line in f.getvalue().splitlines() if line.startswith("Version")), "No match") 

Nhưng một cách dễ dàng hơn là sử dụng pkg_resources, nếu bạn nhìn vào các nguồn cho show, bạn có thể xem cách nó được thu thập:

from pip._vendor import pkg_resources 

def get_version(package): 
    package = package.lower() 
    return next((p.version for p in pkg_resources.working_set if p.project_name.lower() == package), "No match") 

Để sử dụng nó chỉ vượt qua các tên gói:

In [57]: get_version("pyodbc") 
Out[57]: '3.0.10' 

In [58]: get_version("pandas") 
Out[58]: '0.17.1' 

In [59]: get_version("requests") 
Out[59]: '2.9.1' 

In [60]: get_version("foobar") 
Out[60]: 'No match' 

Bạn có thể dễ dàng mở rộng để có được thông tin khác nhau bằng cách sử dụng logic tương tự với lệnh show.

2

Bạn có thể sử dụng lệnh này (từ thiết bị đầu cuối)

pip freeze | grep pyodbc 

Đối với lắp đặt pip (debian, ubuntu):

apt-get install python-pip 
+1

grep hoạt động từ 'cmd'? –

+1

haha ​​xin lỗi, chỉ dành cho linux – qvpham

+0

Và tôi nghĩ mình đã tạo ra một khám phá mới;) –

Các vấn đề liên quan