我目前正在使用setuptools src
layout开发Python(≥3.6)软件包。该软件包具有一个入口点(即src/mypackage/__main__.py
),因此可以用作命令(即python -m mypackage
)。
该软件包的版本存储在我的setup.cfg
中,并在运行时使用importlib.metadata.version
(对于Python <3.8,则为importlib_metadata.version
提取),如{{ 3}}。特别地,第6点不切实际,因为我的src/myproject/__init__.py
确实导入了具有依赖性的函数。
我的问题是,当我使用PyInstaller生成程序包的可执行文件(具有相同的入口点)时,importlib.metadata.version
在运行时找不到程序包,并且应用程序因PackageNotFoundError
而崩溃。 / p>
该软件包旨在用作Python软件包和独立的可执行文件。那么,在两种情况下我都应该使用什么策略来管理软件包的版本?