Python3获取SVN提交版本号时pysvn的Client.info方法失效如何解决
Python3.8环境下获取SVN提交版本号解决方案
你碰到的
'Client' object has no attribute 'info'报错,根源是pip源中版本号为0.1.0的pysvn并非适配Python3的官方PySVN库,是未实现核心SVN操作的同名无效包。
方案1:安装官方适配Python3的PySVN库操作
- 优先使用conda安装适配版本,执行命令:
conda install -c conda-forge pysvn - Windows环境也可以自行查找对应Python3.8版本的官方预编译whl包安装
- 安装成功后使用如下代码获取提交版本号:
import pysvn client = pysvn.Client() # Python3版PySVN使用info2方法替代旧版info方法,recurse=False表示不递归查询子目录 info_result = client.info2(file_path, recurse=False) commit_revision = info_result[0][1].commit_revision.number
方案2:调用本地SVN客户端命令行获取(兼容性最高)
该方案不需要安装任何Python SVN相关依赖,仅需要本地设备已经安装SVN客户端且配置了环境变量,代码示例如下:
import subprocess import re def get_svn_commit_revision(file_path): # 调用svn info命令获取目标路径的版本信息 cmd_result = subprocess.run( ["svn", "info", file_path], capture_output=True, text=True, encoding="utf-8" ) # 匹配提交版本号字段 match_obj = re.search(r"Commit Revision: (\d+)", cmd_result.stdout) if match_obj: return int(match_obj.group(1)) return None # 调用示例 commit_revision = get_svn_commit_revision("你的目标文件/文件夹路径")
内容的提问来源于stack exchange,提问作者Lei
相关产品推荐
相关产品推荐

