如何获取软件包中setup.py(setuptools)中定义的版本?

发布于 2021-01-29 19:30:47

如何setup.py从软件包中定义版本(出于--version或其他目的)?

关注者
0
被浏览
315
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    询问已安装发行版的版本字符串

    要在运行时从程序包内部检索版本(您的问题似乎在问什么),可以使用:

    import pkg_resources  # part of setuptools
    version = pkg_resources.require("MyProject")[0].version
    

    存储版本字符串以在安装期间使用

    如果您想沿另一方向走动(这似乎是其他答案作者似乎认为您正在询问的问题),请将版本字符串放在单独的文件中,然后在中读取该文件的内容setup.py

    您可以用__version__一行在软件包中创建一个version.py
    ,然后使用来从setup.py中读取它execfile('mypackage/version.py'),以便__version__在setup.py命名空间中进行设置。

    如果您想要一种更简单的方法来适用于所有Python版本,甚至可能需要访问版本字符串的非Python语言,请执行以下操作:

    将版本字符串存储为纯文本文件(例如)的唯一内容VERSION,并在期间读取该文件setup.py

    version_file = open(os.path.join(mypackage_root_dir, 'VERSION'))
    version = version_file.read().strip()
    

    然后,同一个VERSION文件在任何其他程序(甚至是非Python程序)中也可以正常工作,并且您只需要在一个位置更改所有程序的版本字符串。

    安装过程中有关种族状况的警告

    顺便说一句,不要按照此处另一个答案的建议,从setup.py导入软件包:它似乎对您有用(因为您已经安装了软件包的依赖项),但是会对软件包的新用户造成严重破坏,因为如果不先手动安装依赖项,他们将无法安装您的软件包。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看