Nic*_*mer 4 python metadata setup.py
我有一个带有目录结构的小 Python2/3 项目
superproject/
-> __init__.py
-> meta.py
setup.py
Run Code Online (Sandbox Code Playgroud)
该__init__.py文件包含一堆imports和实际代码,meta有
__author__ = 'John Doe'
__author_email__ = 'john@doe.com'
__version__ = '1.2.3'
# [...]
Run Code Online (Sandbox Code Playgroud)
我想让元信息在 setup.py(简单:只是import superproject.meta)和superprojectas
import superproject
print(superproject.__version__)
Run Code Online (Sandbox Code Playgroud)
我正在为后一个要求而苦苦挣扎。做的时候
from .meta import *
Run Code Online (Sandbox Code Playgroud)
在__init__.py,我只能做
print(superproject.meta.__version__)
Run Code Online (Sandbox Code Playgroud)
例如。
请注意,我不能__init__.py直接将元信息放入,因为我必须import superproject放入setup.py,而且 的众多import依赖项superproject当时尚不可用。
任何提示?
这是一个已知问题,Python 软件基金会有一篇关于它的整篇文章:Single-sourcing the Project Version。
我尝试了所有建议,并最终决定了以下解决方案。
meta.py,以__about__.py与from ... import ...它__init__.py。setup.py,exec __about__.py进入字典并使用该信息。这提供了所有元信息superproject.__about__.__version__以及superproject.__version__. 此外,这使得import从superproject.
虽然它给 增加了一点复杂性setup.py,但它基本上没有触及实际的项目代码。我真的不在乎setup.py变得多么复杂,只要它是可远程维护的。
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |