How to load package version into __version__ variable if you are using pbr?

天涯浪子 提交于 2019-12-10 16:37:45

问题


In order to simplify python packaging I am trying to migrate to use of pbr.

Still, I was not able to figure out how to expose the version of the package into __version__ variable.

This is quite important because I do have many users of the package that do rely on the existence of the version variable.

People should be able to do:

import somemodule
print(somemodule.__version__)

回答1:


I am not sure if that's the best approach but I was able to spot one other packages that is doing something similar: mock.

__all__ = (
    '__version__',
    'version_info'
)

from pbr.version import VersionInfo

_v = VersionInfo('mock').semantic_version()
__version__ = _v.release_string()
version_info = _v.version_tuple()



回答2:


As the existing answer wasn't clear on some of the setup required, here is a reply with some more context.

Update your version string

First, update your version string in your setup.cfg, if tracking it manually there.

Otherwise, if pulling version and other info from the git repo:

  • make your new commit
  • generate a new version tag (if not a development release)
  • run py setup.py sdist to generate your distribution and update local files based on the git info (AUTHORS, ChangeLog, etc.).

Setup package __init__.py

my_package/__init__.py

all = ('__version__')

from pbr.version import VersionInfo

# Check the PBR version module docs for other options than release_string()
__version__ = VersionInfo('<my_package>').release_string()

Then in the script using the package

my_script.py

import my_package

print(my_package.__version__)

For more details, see the pbr.version module documentation.



来源:https://stackoverflow.com/questions/40562270/how-to-load-package-version-into-version-variable-if-you-are-using-pbr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!