【发布时间】:2014-04-15 12:12:27
【问题描述】:
作为自动化部署管道的一部分,我正在使用maven-assembly-plugin 创建一个tar.gz 文件,然后使用python 的tarfile 模块解压它。
提取失败并出现异常:
Traceback (most recent call last):
File "tarfile-assembly-testcase/extract_tar.py", line 20, in <module>
tarfile.open(fileobj=f, mode='r:gz')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", line 1676, in open
return func(name, filemode, fileobj, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", line 1725, in gzopen
**kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", line 1703, in taropen
return cls(name, mode, fileobj, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", line 1572, in __init__
self.firstmember = self.next()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", line 2335, in next
raise ReadError(str(e))
ReadError: invalid header
压缩和未压缩的 tar 文件都会发生这种情况。可以从命令行解压缩相同的文件。我已经用bsdtar 2.8.3 和tar (GNU tar) 1.26 对其进行了测试。我正在使用python 2.7。
请尝试我在github上发布的demo。这是一个 maven 项目,运行 mvn package 它将创建一个包含项目源的 tar.gz(仅 pom.xml)。包含的python脚本尝试使用tarfile提取它。
有什么想法可以让maven-assembly-plugin 和python 的tarfile 配合得很好吗?
【问题讨论】:
-
你在python中使用哪个版本的tar模块(找到一个旧的bug for py module?为什么不在bug in jira for the maven-assembly-plugin中归档。
标签: python maven tar maven-assembly-plugin tarfile