2015-10-03 45 views
14

我在setup.py中尋找包含非python文件的各種選項,它們有點不直觀。我希望能夠檢查由bdist_wheel生成的包,以查看其中的實際內容 - 與其確保它可以工作(這是測試的目的),而不是爲了查看我所選擇的選項的效果組。如何列出python輪內的文件?

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

+2

很確定[這是一個zip文件](https://pypi.python.org/pypi/wheel)。 –

+0

關於「不那麼確定它會工作」:一些清單項目是不常見的測試主題,例如確保任何額外的許可證文件伴隨外部C庫,這些文件包含在編譯後的表格中。這些項目最好通過列出車輪內容來檢查。另請參閱:https://stackoverflow.com/questions/24347450/how-do-you-add-additional-files-to-a-wheel –

回答

16

您可以將wheel文件更改爲.zip的擴展名,然後像其他zip文件一樣提取內容。

PEP 427

的輪子是一個特殊格式的文件名 和.whl擴展名的ZIP格式的壓縮文件。

Django python package具有輪文件。以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'] 
+0

嗯,現在我覺得愚蠢。這很好,謝謝。 – Andrew

+3

@如果你正在學習新的東西,安德魯永遠都不會覺得啞巴! –

1

unzip -l dist/*.whlcredit

由於車輪是ZIP文件,unzip作品。除非擴展名重命名爲zip,否則文件名的標籤填寫將不起作用。 from zipfile import ZipFile方法假定系統中只存在Python,但shell中的一行更實用。

相關問題