Как перечислить файлы внутри колеса python?

Я провожу различные варианты setup.py для включения файлов, отличных от python, и они несколько менее интуитивно понятны. Я хотел бы иметь возможность проверить пакет, сгенерированный bdist_wheel, чтобы увидеть, что на самом деле в нем - не столько, чтобы убедиться, что он будет работать (для чего нужны тесты), но и для просмотра эффектов параметров я Установлен.

Как мне перечислить файлы, содержащиеся в .whl?

Ответ 1

Вы можете взять файл с колесом, чтобы изменить расширение на .zip, а затем извлечь содержимое, как и любой другой zip файл.

из PEP 427

Колесо представляет собой архив в формате ZIP с форматированным именем файла и расширение .whl.

Пример

пакет Django python содержит файл колес. Попробуйте Django-1.8.4-py2.py3-none-any.whl в качестве примера. Их пакет содержит файлы, отличные от python, если вы хотите посмотреть, где они хранятся в архиве.

код

Следующий код работает правильно в python2 и python3. Он будет перечислять файлы в любом пакете колес. В качестве примера я использую пакет колеса 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']

Ответ 2

unzip -l dist/*.whl (кредит)

Так как колесо является ZIP файлом, работает unzip. Заполнение вкладки для имени файла не будет работать, если расширение не переименовано в zip. Подход from zipfile import ZipFile предполагает только наличие Python в системе, но однострочный в оболочке более практичен.