问题
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 sdistto 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