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__)
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()
As the existing answer wasn't clear on some of the setup required, here is a reply with some more context.
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:
py setup.py sdist
to generate your distribution and update local files based on the git info (AUTHORS
, ChangeLog, etc.).Note: The quickest command to generate new version from updated Git tags is python setup.py install
, but I've seen a warning not to use that. It's working fine for me, but may just be my particular setup. Using the sdist
or a bdist_xxx
will generate a full distribution that you need to delete if you aren't using it.
__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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With