【问题标题】:Adding Version Control / Numbering (?) to Python Project将版本控制/编号 (?) 添加到 Python 项目
【发布时间】:2023-03-11 18:05:01
【问题描述】:

对于我目前的 Java 项目,我通过将其声明为 Maven 项目来进行完整的版本控制。但是,我现在有一个 Python 项目,我要标记 0.2.0,它没有版本控制。因此,如果我以后遇到此代码,我不会知道它是什么版本。

如何向 Python 项目添加版本控制,就像 Maven 为 Java 所做的那样?

【问题讨论】:

  • 我不懂 Maven,但是为什么不能使用一些不是 Python 特有的简单版本控制系统(svn、git、bazaar...)?
  • 我使用的是 SVN,但这不等同于 maven,它是 with maven 使用的。
  • 嗯,要查看源文件中的版本吗?我不知道 svn 是否有您可以使用的标签(基本上它们在结帐时更改为包含您想要的数据,例如版本号、作者等),但至少使用 git 您可以编写一个非常简单的钩子为此。
  • 我认为您在谈论“版本编号”而不是“版本控制”。版本控制通常被定义为 Makis 提到的工具,例如 svn、git、hg、bzr。
  • stackoverflow.com/questions/458550/… question 的重复。简短回答,请使用__version__

标签: python version-control


【解决方案1】:

首先,maven 是一个构建工具,与版本控制无关。你不需要 Python 的构建工具——没有什么可以“构建”的。

有些人喜欢创建.egg 文件以进行分发。它与使用 Python 获得的“构建”一样接近。这是一个简单的setup.py 文件。

您可以像这样在源代码中使用 SVN 关键字替换。请记住为将具有此功能的模块启用关键字替换。

__version__ = "$Revision$"

这将确保版本或修订字符串被 SVN 强制输入您的源代码。

您还应该在 setup.py 文件中包含版本关键字。

【讨论】:

    【解决方案2】:

    创建一个distutils setup.py 文件。这是相当于 maven pom.xml 的 Python,它看起来像这样:

    from distutils.core import setup
    setup(name='foo',
          version='1.0',
          py_modules=['foo'],
          )
    

    如果你想要像 maven 这样的依赖管理,看看setuptools

    【讨论】:

      【解决方案3】:

      Ants 的回答是正确的,但我想补充一点,您的模块可以根据PEP 8 定义一个__version__ 变量,该变量可以手动或通过Subversion 或CVS 填充,例如如果你有一个模块,有一个文件thingy/__init__.py:

      ___version___ = '0.2.0'
      

      然后您可以在 setup.py 中导入此版本:

      from distutils.core import setup
      import thingy
      setup(name='thingy',
            version=thingy.__version__,
            py_modules=['thingy'],
            )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        • 2023-03-06
        • 2015-03-30
        • 1970-01-01
        • 1970-01-01
        • 2016-08-18
        相关资源
        最近更新 更多