在阅读了python文档(http://www.python.org/dev/peps/pep-0396/)之后,我对如何正确设置__version__包的属性感到困惑.有人提到将它们放入setup.py文件中,这让我感到困惑:它不可用my_package.__version__,是吗?
我最终从一个单独的文件中导入了version属性.
所以我的"版本"文件通常是
my_package/
__init__.py
my_module1/
...
my_module2/
...
my_module3/
...
info/
__init__.py
version.py
__version__ = '0.1.0'
Run Code Online (Sandbox Code Playgroud)
并在最上面__init__.py我导入__version__属性info.version:
import __version__
这样一来就可以获得版本号
my_package.__version__
Run Code Online (Sandbox Code Playgroud)
我只是想知道这是否是一个"好的"方法,如果有人反对这样做呢?我期待着您的意见和建议!
一种解决方案是__version__在__init__.py文件中定义,然后从setup.py中读取。这意味着您只需要在一个位置更改版本。我写了一个小函数来做到这一点:
from setuptools import setup
import re
def get_property(prop, project):
result = re.search(r'{}\s*=\s*[\'"]([^\'"]*)[\'"]'.format(prop), open(project + '/__init__.py').read())
return result.group(1)
project_name = 'YOUR PROJECT'
setup(
...,
version = get_property('__version__', project_name),
...,
)
Run Code Online (Sandbox Code Playgroud)
您还可以使用它来获取文件中__author__定义的类似内容或其他内容__init__.py
小智 0
您还没有说明如何将版本号获取到 setup.py 中,但不要尝试使用通常的import my_package方法导入它。当您运行 setup.py 时,您的软件包尚未安装!
我通常的方法是在 setup.py 中定义版本号,并__init__.py在版本号更改时让 setup.py (重新)生成包的顶级文件。__init__.py如果文件不包含其他代码,这很容易做到。
| 归档时间: |
|
| 查看次数: |
11188 次 |
| 最近记录: |