我在setup.py
中尋找包含非python文件的各種選項,它們有點不直觀。我希望能夠檢查由bdist_wheel
生成的包,以查看其中的實際內容 - 與其確保它可以工作(這是測試的目的),而不是爲了查看我所選擇的選項的效果組。如何列出python輪內的文件?
如何列出.whl
中包含的文件?
我在setup.py
中尋找包含非python文件的各種選項,它們有點不直觀。我希望能夠檢查由bdist_wheel
生成的包,以查看其中的實際內容 - 與其確保它可以工作(這是測試的目的),而不是爲了查看我所選擇的選項的效果組。如何列出python輪內的文件?
如何列出.whl
中包含的文件?
您可以將wheel文件更改爲.zip
的擴展名,然後像其他zip文件一樣提取內容。
的輪子是一個特殊格式的文件名 和
.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']
嗯,現在我覺得愚蠢。這很好,謝謝。 – Andrew
@如果你正在學習新的東西,安德魯永遠都不會覺得啞巴! –
unzip -l dist/*.whl
(credit)
由於車輪是ZIP文件,unzip
作品。除非擴展名重命名爲zip
,否則文件名的標籤填寫將不起作用。 from zipfile import ZipFile
方法假定系統中只存在Python,但shell中的一行更實用。
很確定[這是一個zip文件](https://pypi.python.org/pypi/wheel)。 –
關於「不那麼確定它會工作」:一些清單項目是不常見的測試主題,例如確保任何額外的許可證文件伴隨外部C庫,這些文件包含在編譯後的表格中。這些項目最好通過列出車輪內容來檢查。另請參閱:https://stackoverflow.com/questions/24347450/how-do-you-add-additional-files-to-a-wheel –