我想创建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的使用,我认为该文档应该进行更新以便给出清晰的说明。
答案 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'))