python - 使用 setup.py 中的 setuptools.setup 值显示 __version__
问题描述
我有一个打包的项目mytools
,它使用 setuptools 的设置将其版本存储在 setup.py 项目文件中,例如
import setuptools
setuptools.setup(
name='mytools',
version='0.1.0'
)
我想获得mytools.__version__
基于版本值的共同特征,例如
import mytools
mytools.__version__
>>>'0.1.0'
setuptools 中有本地/简单的方法吗?__version__
在 setuptools 中找不到对的引用。此外,我不想存储版本,__init__.py
因为我更愿意将版本保留在当前位置 (setup.py)。类似问题的许多答案并没有说明我的具体问题,例如如何获得我的包中 setup.py (setuptools) 中定义的版本?
解决方案
添加__version__
到所有顶级模块和包是PEP 396的建议。
最近,我看到人们越来越关注这项建议及其实际用途,例如这里:
- https://gitlab.com/python-devs/importlib_resources/-/issues/100
- https://gitlab.com/python-devs/importlib_metadata/-/merge_requests/125
- 还有一些我现在找不到...
照这样说...
这样的事情通常是这样解决的:
# my_top_level_module/__init__.py
import importlib.metadata
__version__ = importlib.metadata.version('MyProject')
参考资料:
推荐阅读
- reactjs - 使用 create-react-app 时如何更新预先存在的依赖项?
- r - 根据第三列中的行计算两列中日期之间的平均天数
- r - ggplot 中的边框功能没有按预期工作?
- php - 如何仅显示从数据库中获取的这些数据的名称?
- json - 詹金斯没有开始或重新上线 - 挂起并显示严重:无法解析提供的 JSON - [/var/lib/jenkins/cb-envelope/envelope.json]
- apache-spark - org.apache.spark.SparkException:通过spark将数据写入Hbase时写入行时任务失败
- php - 我下载的文件将其名称更改为“下载”,尽管我在标题中更改了它
- keyboard - 使用 python 访问应用程序
- javascript - javascript 错误:为什么我无法将标签从“li”克隆/复制到“table”?
- node.js - 使用 Sails.js 将多个文件上传到 Amazon S3 存储桶?