使用shutil.make_archive时出现目录层次结构问题

时间:2018-08-19 04:24:51

标签: python python-3.x

我想创建pip软件包的zip存档,代码如下

import shutil
import os
import pip
shutil.make_archive(os.path.join(os.getcwd(), 'pipzip'), 'zip', root_dir=pip.__path__[0])

但何时

shutil.unpack_archive(os.path.join(os.getcwd(), 'pipzip.zip'))

我得到了当前目录中的文件和文件夹的列表,该目录最初位于pip包中,即

['_internal', '_vendor', '__init__.py', '__main__.py', '__pycache__']

虽然我希望有一个名为pip的目录包含shutil.unpack_archive时的文件和文件夹列表,所以我应该对shutil.make_archive进行哪些调整?

顺便说一句,即使咨询文档,我也无法掌握shutil.make_archive的使用,我认为该文档应该进行更新以便给出清晰的说明。

1 个答案:

答案 0 :(得分:1)

你在那儿。基本上,您指定的是 root_dir 而不是 base_dir 。您可以使用以下代码段来实现。

import shutil
import os
import pip
from pathlib import Path
shutil.make_archive(base_name=os.path.join(os.getcwd(), 'pipzip'), format='zip', root_dir=Path(pip.__path__[0]).parent, base_dir=Path(pip.__path__[0]).name)
shutil.unpack_archive(os.path.join(os.getcwd(), 'pipzip.zip'))