我已经开发了一个脚本,我的小组中的其他研究人员需要通过大量数据快速搅动我们在实验过程中产生的脚本。然而,我是我们团队中唯一的“Python家伙”,因此我不能总是指望他们拥有像Numpy和Scipy这样的模块的最新安装。如何验证一组模块是否已安装并且是最新的?
在我的脚本中,是否有一种方法来验证他们的模块安装并提示他们安装/升级?
我已经开发了一个脚本,我的小组中的其他研究人员需要通过大量数据快速搅动我们在实验过程中产生的脚本。然而,我是我们团队中唯一的“Python家伙”,因此我不能总是指望他们拥有像Numpy和Scipy这样的模块的最新安装。如何验证一组模块是否已安装并且是最新的?
在我的脚本中,是否有一种方法来验证他们的模块安装并提示他们安装/升级?
你可以使用distutils.version.LooseVersion
:
from distutils.version import LooseVersion
import numpy
if LooseVersion(numpy.__version__) < LooseVersion('1.10'):
raise ValueError('upgrade numpy! You need version 1.10 to run this.')
# or "print" instead of an exception.
如果你不知道,如果安装了软件包,你也可以try
到import
模块:
try:
import numpy
except ImportError:
raise ValueError("install numpy!")
的方式做,这是一个名为“setup.py”的文件。在这个文件中,您可以定义脚本的所有需求,用户将通过调用:python setup.py install
自动安装它们。
一些资源,可以帮助: https://docs.python.org/2/distutils/setupscript.html
例setup.py文件:在安装脚本
Python文档 https://github.com/pypa/sampleproject/blob/master/setup.py
另一个类似的答案关于setup.py:https://stackoverflow.com/a/4740640/7299836
但'setup.py'用于包。脚本(根据定义)不应该要求安装。 – MSeifert