从 setup.py 检索 python 模块自己的版本 [重复]

Posted

技术标签:

【中文标题】从 setup.py 检索 python 模块自己的版本 [重复]【英文标题】:Retrieving python module own version from setup.py [duplicate] 【发布时间】:2018-02-08 02:19:39 【问题描述】:

我正在根目录中使用标准 setup.py 编写基于 Flask 的模块:

#!/usr/bin/env python
from distutils.core import setup

setup(name=modulename,
      version='0.2.16.dev0',
      description='...',
      author='...',
      ...
     )

我愿意使用 Flask API 公开模块版本。以编程方式访问我自己的模块版本的正确方法是什么?

谢谢

更新: 我忘了提到该模块不需要作为标准模块安装,并且可能在 PYTHONPATH 中不可用。这就是为什么这个问题不像this和this

【问题讨论】:

在某个变量中设置版本并将该变量传递给 setup() 不是一种选择,因为我正在使用自动设置此版本的发布工具...... 【参考方案1】:

将版本放入version.py__version__.py 等(在包内)并将其导入setup.py 和应用程序:

from distutils.core import setup
from mypackage.version import version

setup(…
      version=version,
      …
     )

如果在setup.py 中导入您的包会导致不必要的副作用,您可以阅读mypackage/version.py 并解析它或exec() 或单独导入它(没有包),技巧:

from imp import load_source
from os.path import abspath, dirname, join

versionpath = join(abspath(dirname(__file__)), "mypackage", "__version__.py")
load_source("mapackage_version", versionpath)
from mapackage_version import version

【讨论】:

以上是关于从 setup.py 检索 python 模块自己的版本 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python - 在 setup.py 安装之前和之后导入包模块

python setup.py sdist 仅包括来自***模块的 .py 源

python中的模块通过setup.py怎么安装

python 通过下载包setup.py安装模块

如何使用和制作 Python 安装模块

怎么安装python模块,如何安装python模块,常用安装方式