如何setup.py
从软件包中定义版本(出于--version
或其他目的)?
要在运行时从程序包内部检索版本(您的问题似乎在问什么),可以使用:
import pkg_resources # part of setuptools
version = pkg_resources.require("MyProject")[0].version
如果您想沿另一方向走动(这似乎是其他答案作者似乎认为您正在询问的问题),请将版本字符串放在单独的文件中,然后在中读取该文件的内容setup.py
。
您可以用__version__
一行在软件包中创建一个version.py
,然后使用来从setup.py中读取它execfile('mypackage/version.py')
,以便__version__
在setup.py命名空间中进行设置。
如果您想要一种更简单的方法来适用于所有Python版本,甚至可能需要访问版本字符串的非Python语言,请执行以下操作:
将版本字符串存储为纯文本文件(例如)的唯一内容VERSION
,并在期间读取该文件setup.py
。
version_file = open(os.path.join(mypackage_root_dir, 'VERSION'))
version = version_file.read().strip()
然后,同一个VERSION
文件在任何其他程序(甚至是非Python程序)中也可以正常工作,并且您只需要在一个位置更改所有程序的版本字符串。
顺便说一句,不要按照此处另一个答案的建议,从setup.py导入软件包:它似乎对您有用(因为您已经安装了软件包的依赖项),但是会对软件包的新用户造成严重破坏,因为如果不先手动安装依赖项,他们将无法安装您的软件包。
问题内容: 使用setuptools时,无法让安装程序提取任何文件。我读过的所有内容都表明,以下是正确的方法。有人可以请教吗? 数据文件的位置在哪里。 问题答案: 我知道这是一个老问题,但人们发现这里通过谷歌自己的方式: 是低了下来,肮脏的谎言。它仅在构建 二进制 软件包()时使用, 而 在构建源软件包()时不使用。当然,这是荒谬的-人们希望构建源代码分发将导致文件的集合,这些文件可以发送给其他人
问题内容: 我有一个与Travis- CI一起使用的文件。看来愚蠢复制中都要求和,所以我希望到一个文件句柄传递给在kwarg 。 这可能吗?如果是这样,我应该怎么做呢? 这是我的文件: 问题答案: 你可以翻转它周围,列表中的依赖关系,并有单字符-点-在代替。 另外,即使不建议使用,也可以通过以下技巧(通过进行测试)来解析文件(如果它没有通过URL引用任何外部要求): 但是,这不会过滤环境标记。 在
问题内容: 使用,等,在以下位置指定软件包版本: 我希望能够从包中访问相同的版本号: 我可以将其添加到包的__init__.py中,但是我还想在包中包括其他导入,以创建包的简化接口: 和 但是,如果这些其他导入导入尚未安装的其他软件包,则可能导致安装失败。与setup.py和软件包共享软件包版本的正确方法是什么? 问题答案: 仅设置版本,然后使用读取自己的版本,从而有效地查询元数据: 文件: 文件
问题内容: 我如何实际创建使用git repo标签进行版本控制,使用和的python软件包的发行版/发行版? 有关所需的基本设置和配置,有很多信息: SetupTools文档-setup()和setup.py配置 Python打包用户指南-安装软件包 PBR v3.1.1文档 StackOverflow:如何使用通过和生成的版本信息 但是有关如何实际创建发行版的简单信息在哪里? 即我正在寻找找到带
如何配置设置。py,这样它就不会试图覆盖已经存在的脚本了?或者,如果编写脚本失败,至少完成包安装的其余部分。我正在使用设置工具进行设置。皮耶。设置的相关部分。这是什么 我的setup.py有版本化脚本(脚本名称中包含python版本)和未版本化脚本。在OS X上,我使用2.7版本的系统python,这需要超级用户权限来运行pip(sudo pip...),这导致脚本安装在具有根所有权的下。然后,当
问题内容: 我是一个有点新的和一般的。 我已经在服务器以及本地开发环境上设置了virtualenv。 在服务器上,程序包运行良好。 但是,在我的本地计算机上似乎根本无法正常工作。 我通常只是像这样在virtual-env中安装它: 不过,这会获得最新版本,这是第一次导致使用最新版本的问题。 所以我像这样卸载了版本5 alpha: 但是现在我不知道如何再次获得工作版本0.4.0 Beta。我试过了,