2016-03-29 10 views
5

मैं pyodbc का उपयोग कर रहा हूं और मैं इसका उपयोग कर रहा हूं जिसका संस्करण मैं उपयोग कर रहा हूं। स्पष्ट रूप से मैं pyodbc.__version__ का उपयोग नहीं कर सकता क्योंकि शायद चर सेट नहीं है।यदि कोई __version__ चर सेट नहीं है तो python पैकेज के संस्करण को कैसे जांचें

पैकेज के संस्करण को मैं और कैसे समझ सकता हूं?

उत्तर

7

यह संस्करण जानकारी है, बस का उपयोग .version:

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

पीआईपी शो कमांड भी आपके लिए यह प्राप्त करेगा:

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 

आप stdout अनुप्रेषित और उत्पादन को पार्स सकता है:

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

लेकिन एक आसान तरीका pkg_resources उपयोग करने के लिए, यदि आप show के लिए स्रोत पर देखने के है, आप देख सकते हैं कि यह कैसे एकत्र की जाती है:

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

यह सिर्फ पैकेज का नाम पारित उपयोग करने के लिए

शो कमांड के समान तर्क का उपयोग करके आप अलग-अलग जानकारी प्राप्त करने के लिए इसे आसानी से बढ़ा सकते हैं।

2

आप पिप (Debian, ubuntu) की स्थापना के लिए (टर्मिनल से) इस आदेश का उपयोग कर सकते

pip freeze | grep pyodbc 

:

apt-get install python-pip 
+1

grep 'cmd' से काम करता है? –

+1

हाहा क्षमा करें, केवल लिनक्स – qvpham

+0

के लिए और मुझे लगता था कि मैंने एक नई खोज की है;) –

संबंधित मुद्दे