列出 python 包中包含的所有文件(相当于"git ls-files")



我在安装python包时遇到了问题,因为一些意外的文件和文件夹很可能包含在我的包中。我已经排除了许多使用MANIFEST.in以及setup.py文件中的exclude=选项的文件和文件夹。然而,在不知道所有文件/文件夹的列表的情况下纠正该问题似乎几乎是不可能的;被跟踪的";在我的包裹里。

在基于git的版本控制系统中有一个整洁的系统,它允许忽略单个文件.gitignore中的文件/文件夹,并使用git ls-files命令列出存储库中包含的文件。

我想知道在python打包系统中是否有与git ls-files等效的命令。如果有这样的命令,那对我来说将是一件幸事,我可以轻松地纠正我的包裹中存在的问题。

如果不是命令,我可以根据setup.pyMANIFEST.in中的条件,以任何方式列出python包中包含的所有文件吗?

如果您指的是分发包归档,它取决于归档类型。轮子(扩展名为.whl(或扩展名为.zip的sdist是zip存档,因此请使用unzip -l dist-file.zip。对于扩展名为.tar.gz的sdist,请使用tar -tavf dist-file.tgztar -tzvf dist-file.tar.gz(选项-a可自动识别存档类型,选项-z可强制压缩gzip(。

要列出已安装的文件,请参阅文件site-packages/<package>-<version>.dist-info/RECORD。要查找site-packages的位置,请运行pip show package-name | grep -F Location:

即使在创建whl或sdist之前,也要列出包中包含的所有文件,请运行pythonsetup.py bdist --dry-run。该命令列出将在不创建实际包的情况下打包的文件。例如:

$ git clone https://github.com/mtchavez/python-package-boilerplate.git
Cloning into 'python-package-boilerplate'...
remote: Enumerating objects: 116, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 116 (delta 0), reused 0 (delta 0), pack-reused 112
Receiving objects: 100% (116/116), 14.03 KiB | 388.00 KiB/s, done.
Resolving deltas: 100% (41/41), done.
$ cd python-package-boilerplate/
$ python setup.py bdist -n
running bdist
running bdist_dumb
running build
running build_py
file packagename.py (for module packagename) not found
file packagename.py (for module packagename) not found
installing to build/bdist.linux-x86_64/dumb
running install
running install_lib
warning: install_lib: 'build/lib' does not exist -- no Python modules to install
running install_egg_info
running egg_info
creating py_boilerplate.egg-info
writing py_boilerplate.egg-info/PKG-INFO
writing top-level names to py_boilerplate.egg-info/top_level.txt
writing dependency_links to py_boilerplate.egg-info/dependency_links.txt
writing manifest file 'py_boilerplate.egg-info/SOURCES.txt'
file packagename.py (for module packagename) not found
reading manifest file 'py_boilerplate.egg-info/SOURCES.txt'
writing manifest file 'py_boilerplate.egg-info/SOURCES.txt'
Copying py_boilerplate.egg-info to build/bdist.linux-x86_64/dumb/home/phd/.local/lib/python2.7/site-packages/py_boilerplate-1.0.0-py2.7.egg-info
running install_scripts
creating /home/phd/tmp/python-package-boilerplate/dist
Creating tar archive
removing 'build/bdist.linux-x86_64/dumb' (and everything under it)

PS。所有命令都适用于Unix/Linux命令行。

最新更新