2016-03-29 1 views

答えて

7

これは、バージョン情報を持っている、ちょうど使用.version

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

pip showコマンドでも取得できます。

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 

あなたは、標準出力をリダイレクトし、出力を解析できます。

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") 

しかし、もっと簡単な方法は、あなたがshowのソースを見れば、あなたはそれが集まっているかを確認することができ、pkg_resourcesを使用することです。

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' 
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") 

はそれだけでパッケージ名を渡す使用するには

同様のロジックをshowコマンドに使用して、別の情報を取得するように簡単に拡張できます。

2

あなたがピップ(Debianの、Ubuntuの)の設置について(端末から)

pip freeze | grep pyodbc 

を、このコマンドを使用することができます。

apt-get install python-pip 
+1

grepは 'cmd'から動作しますか? –

+1

haha​​申し訳ありませんが、Linuxのみ – qvpham

+0

と私は新しい発見をしたと思っていました;) –

関連する問題