web-dev-qa-db-ja.com

__version__変数が設定されていない場合、pythonパッケージのバージョンを確認する方法

pyodbcを使用していますが、使用しているバージョンを知りたいです。どうやらpyodbc.__version__おそらく変数が設定されていないためです。

他にどのようにしてパッケージのバージョンを知ることができますか?

13
LetsPlayYahtzee

バージョン情報があります。.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

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_resourcesshow のソースを見ると、どのように収集されているかがわかります。

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

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

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'

Showコマンドと同様のロジックを使用して、簡単に拡張してさまざまな情報を取得できます。

18

このコマンドを使用できます(ターミナルから)

pip freeze | grep pyodbc

Pip(debian、ubuntu)のインストール:

apt-get install python-pip
2
qvpham

バージョンを含むモジュールに関する短いレポートを取得するには、次のコマンドを実行します。

pip show pyodbc

コマンドプロンプト(例:Windows cmd)。これは、__ version__属性のないモジュールでも機能します。

1
AlexM