web-dev-qa-db-ja.com

pythonホイール内のファイルをリストするにはどうすればよいですか?

Python以外のファイルを含めるためのsetup.pyのさまざまなオプションを調べていますが、それらは直感的ではありません。 bdist_wheelによって生成されたパッケージをチェックして、実際に何が入っているかを確認できるようにしたいのですが、それが機能するかどうかを確認するためではなく(テストの目的)、私が設定したオプション。

.whlに含まれるファイルを一覧表示するにはどうすればよいですか?

30
Andrew

Wheelファイルを使用して拡張子を.Zipに変更し、他のZipファイルと同様にコンテンツを抽出できます。

from PEP 427

ホイールは、特別にフォーマットされたファイル名と.whl拡張子を持つZip形式のアーカイブです。

Django pythonパッケージ にはホイールファイルがあります。 Django-1.8.4-py2.py3-none-any.whl として例:アーカイブのどこに保存されるかを確認したい場合、パッケージにはPython以外のファイルが含まれています。

コード

次のコードは、python2およびpython3で正しく機能します。ホイールパッケージ内のファイルがリストされます。例としてpep8 wheelパッケージを使用します。

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']
30

unzip -l dist/*.whlクレジット

ホイールはZipファイルなので、unzipは機能します。ファイル名のタブ補完は、拡張子の名前がZipに変更されない限り機能しません。 from zipfile import ZipFileアプローチは、システム内にPythonが存在することのみを想定していますが、シェル内のワンライナーがより実用的です。

10