我刚刚安装了 python 模块:使用setuptools
construct
和statlib
:
# Install setuptools to be able to download the following
sudo apt-get install python-setuptools
# Install statlib for lightweight statistical tools
sudo easy_install statlib
# Install construct for packing/unpacking binary data
sudo easy_install construct
我希望能够(以编程方式)检查其版本。我可以从命令行运行python --version
我的 python 版本是2.7.3
。
我建议使用pip 代替 easy_install 。使用 pip,您可以列出所有已安装的软件包及其版本
pip freeze
在大多数 linux 系统中,您可以将其通过管道传递给grep
(或findstr
),以找到您感兴趣的特定软件包的行:
Linux:
$ pip freeze | grep lxml
lxml==2.3
Windows:
c:\> pip freeze | findstr lxml
lxml==2.3
对于单个模块,可以尝试使用__version__
属性,但是有些模块没有它:
$ python -c "import requests; print(requests.__version__)"
2.14.2
$ python -c "import lxml; print(lxml.__version__)"
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute '__version__'
最后,由于问题中的命令带有sudo
前缀,因此您似乎正在安装到全局 python 环境。强烈建议您研究 python虚拟环境管理器,例如virtualenvwrapper
你可以试试
>>> import statlib
>>> print statlib.__version__
>>> import construct
>>> print contruct.__version__
更新:这是 PEP 396 建议的方法。但是 PEP 从未被接受并且已被推迟。实际上,Python 核心开发人员似乎越来越多地建议不建议使用__version__
属性,例如https://gitlab.com/python-devs/importlib_metadata/-/merge_requests/125 中。
Python> = 3.8:
如果您使用的是 python >=3.8
,则可以使用内置库中的模块。要检查包的版本(在本例中construct
)运行:
>>> from importlib.metadata import version
>>> version('construct')
'4.3.1'
Python <3.8:
使用setuptools
库pkg_resources
分发的 pkg_resources 模块。请注意,传递给get_distribution
方法的字符串应对应于 PyPI 条目。
>>> import pkg_resources
>>> pkg_resources.get_distribution('construct').version
'2.5.2'
旁注:
请注意,传递给get_distribution
方法的字符串应该是在 PyPI 中注册的包名称,而不是您要导入的模块名称。不幸的是,这些并不总是相同的(例如,您要pip install memcached
,但要import memcache
)。
如果要从命令行应用此解决方案,则可以执行以下操作:
python -c \
"import pkg_resources; print(pkg_resources.get_distribution('construct').version)"