"Loris Bennett" <loris.benn...@fu-berlin.de> writes: > Hi, > > I have two applications. One uses the system version of Python, which > is 3.6.8, whereas the other uses Python 3.10.8 installed in a non-system > path. For both applications I am using poetry with a pyproject.toml > file which contains the version information and __init__.py at the root > which contains > > try: > import importlib.metadata as importlib_metadata > except ModuleNotFoundError: > import importlib_metadata > > __version__ = importlib_metadata.version(__name__) > > For the application with the system Python this mechanism works, but for > the non-system Python I get the error: > > NameError: name '__version__' is not defined > > For the 3.6 application I have > > PYTHONPATH=/nfs/local/lib/python3.6/site-packages > PYTHONUSERBASE=/nfs/local > PYTHON_VERSION=3.6 > PYTHON_VIRTUALENV= > > and for the 3.10 application I have > > > PYTHONPATH=/nfs/easybuild/software/Python/3.10.8-GCCcore-12.2.0/easybuild/python:/nfs/local/lib/python3.10/site-packages > PYTHONUSERBASE=/nfs/local > PYTHON_VERSION=3.10 > PYTHON_VIRTUALENV= > > The applications are installed in /nfs/local/lib/python3.6/site-packages > and /nfs/local/lib/python3.10/site-packages, respectively. > > Can anyone see where this is going wrong? I thought it should be > enough that the packages with the metadata is available via PYTHONPATH, > but this seems not to be sufficient. So I must be overseeing something.
If in the 3.10 application I add print(f"__init__ Version: {__version__}") to __init__.py the correct version is printed. So the problem is that the variable is not available at the point I am trying access it. The relevant code (a far as I can tell) in main.py looks like this: import typer app = typer.Typer() @app.callback() def version_callback(value: bool): if value: typer.echo(f"Version: {__version__}") raise typer.Exit() @app.callback() def common( ctx: typer.Context, version: bool = typer.Option(None, "--version", help="Show version", callback=version_callback), ): pass if __name__ == "__main__": app() This is the first time I have used typer, so it is more than likely that I have made some mistakes. Cheers, Loris -- This signature is currently under constuction. -- https://mail.python.org/mailman/listinfo/python-list