Python以外のファイルを含めるためのsetup.py
のさまざまなオプションを調べていますが、それらは直感的ではありません。 bdist_wheel
によって生成されたパッケージをチェックして、実際に何が入っているかを確認できるようにしたいのですが、それが機能するかどうかを確認するためではなく(テストの目的)、私が設定したオプション。
.whl
に含まれるファイルを一覧表示するにはどうすればよいですか?
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']
unzip -l dist/*.whl
( クレジット )
ホイールはZipファイルなので、unzip
は機能します。ファイル名のタブ補完は、拡張子の名前がZip
に変更されない限り機能しません。 from zipfile import ZipFile
アプローチは、システム内にPythonが存在することのみを想定していますが、シェル内のワンライナーがより実用的です。