如何列出python轮中的文件?

2024-04-19 13:04:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在讨论setup.py包含非python文件的各种选项,它们有些不直观。我希望能够检查由bdist_wheel生成的包,以查看其中的实际内容——与其说是确保它能够工作(这就是测试的目的),不如说是查看我设置的选项的效果。

如何列出.whl中包含的文件?


Tags: 文件py目的内容选项setup直观bdist
2条回答

您可以将wheel文件的扩展名更改为.zip,然后像提取任何其他zip文件一样提取内容。

来自PEP 427

A wheel is a ZIP-format archive with a specially formatted file name and the .whl extension.

示例

Django python package有一个控制盘文件。以Django-1.8.4-py2.py3-none-any.whl为例。如果您想查看它们最终存储在归档文件中的位置,那么它们的包包含非python文件。

代码

下面的代码在python2和python3中正常工作。它将列出任何wheel包中的文件。我以pep8车轮包为例。

from zipfile import ZipFile
path = '/tmp/pep8-1.7.0-py2.py3-none-any.whl'
print(ZipFile(path).namelist())

输出

['pep8.py', 'pep8-1.7.0.dist-info/DESCRIPTION.rst', 'pep8-1.7.0.dist-info/entry_points.txt', 'pep8-1.7.0.dist-info/metadata.json', 'pep8-1.7.0.dist-info/namespace_packages.txt', 'pep8-1.7.0.dist-info/top_level.txt', 'pep8-1.7.0.dist-info/WHEEL', 'pep8-1.7.0.dist-info/METADATA', 'pep8-1.7.0.dist-info/RECORD']

unzip -l dist/*.whlcredit

由于轮子是一个ZIP文件,unzip可以工作。除非将扩展名重命名为zip,否则文件名的制表符完成将不起作用。from zipfile import ZipFile方法假设系统中只存在Python,但是shell中的一行代码更实用。

相关问题 更多 >