【问题标题】:Python best way to document imported module version in scripts [closed]Python在脚本中记录导入的模块版本的最佳方法[关闭]
【发布时间】:2016-06-06 15:57:23
【问题描述】:

在单个 python 脚本中记录导入模块的版本的最佳方式或 PEP 约定是什么?有时我不得不使用由于模块不兼容而无法运行的旧脚本(例如,脚本是使用 pandas 0.15.0 和 matplotlib 1.3.0 编写的,现在我使用 pandas 0.18.1 和 matplotlib 1.5.1)。例如,如果脚本的第一部分在注释中包含 pandas(和其他导入的模块)版本,那就太好了,例如:

"""my_script_version = '0.0.1'
pandas_version = '0.15.0'
matplotlib_version = '1.3.0'
other_imported_module_version = 'x.y.z'
"""

或者有什么官方的方法可以做到这一点?比如使用一些元数据?

__version__ = '0.0.1'
__date__ = '2016-06-06'
__author__ = 'ragesz'

__pandas_version__ = '0.15.0'
__matplotlib_version__ = '1.3.0'
__other_imported_module_version__ = 'x.y.z'

谢谢!

【问题讨论】:

    标签: python module documentation pep


    【解决方案1】:

    PEP 518 最近已被接受关于您的问题。

    依赖项必须存储在特定文件中pyproject.toml

    [build-system]
    # Minimum requirements for the build system to execute.
    requires = ["setuptools", "wheel"]  # PEP 508 specifications.
    

    PEP 508 为需求指定语法。

    【讨论】:

    • 谢谢!我知道我可以得到例如pd.__version__ 用于熊猫(以及任何其他模块)。我不知道将版本号插入我的python脚本的编码风格是什么。放在评论里?还是存储在变量中?还是其他方式?
    • 只需在您的模块中声明即:__version__ = '0.1.0'(遵循python.org/dev/peps/pep-0440 中的规范)
    • 我编辑并更新了我的问题以便更好地理解(我想“保存”导入模块的版本,而不是我的脚本版本)。
    • 再次感谢您的较早和最终答复。最后,我编写了一个函数,该函数返回一个包含导入但不包含核心模块名称和版本以及一些系统信息(关于 os、cpu、编译器)的字典。我可以将其结果复制粘贴到我的脚本中,或者传递给__<abc>__ 变量,或者我可以将其保存到单独的(toml 或 txt)文件中。
    【解决方案2】:

    在脚本中添加信息的最佳方式是使用元数据,例如:

    __version__="1.0.2"
    __appname__="name script"
    __author__="author"
    __description__="short description"
    __long_description__="long description for your script"
    __author_email__="author@gmail.com"
    

    【讨论】:

      猜你喜欢
      • 2010-09-25
      • 2016-01-13
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多