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