创建 pip 包时,如何使用 Manifest.in 排除目录?
When creating a pip package, how do I exclude directories using Manifest.in?
我正在尝试创建一个 pip 包,当我创建该包时,它总是包含 __pycache__
个子目录。我正在使用 MANIFEST.in 来指定应该包括哪些文件类型并且效果很好。
如何告诉 MANIFEST.in 排除包中任意位置的特定文件夹?
编辑: 我试图排除一个 目录 ,而不仅仅是一个文件。清单中有几个选项可以排除文件,例如 global-exclude
或 recursive-exclude
。但是没有global-exclude-dir
选项,这就是我在这里问的原因。
我的 setup.py 看起来像这样:
from setuptools import setup, find_packages
setup(
name='my_package',
version='0.0.1',
install_requires=[
'importlib-metadata; python_version == "3.8"',
],
include_package_data=True,
package_dir={"my_package": "contrib"}, # renamed src to contrib
)
清单包含以下内容:
global-include *.npy *.npz
global-include *.txt
# [+ current exclude-directory test]
global-include
命令按预期工作。我尝试了以下排除任何 __pycache__
目录(感谢@phd 的建议):
prune __pycache__
prune */__pycache__
recursive-exclude */__pycache__ *
此 post 的目标是包含 pip 包中的所有 __pycache__
目录。这实际上是不可能的,因为每个 __init__.py
在创建清单后都会创建一个 __pycache__
目录。
对于任何在使用 MANIFEST.in 构建轮子时寻找如何排除文件夹的答案的人,phd posted 的两个建议都有效:
prune */__pycache__
recursive-exclude */__pycache__ *
prune __pycache__
仅修剪 top-level __pycache__
。要在目录层次结构中的任何位置修剪 __pycache__
,请使用
prune */__pycache__
我正在尝试创建一个 pip 包,当我创建该包时,它总是包含 __pycache__
个子目录。我正在使用 MANIFEST.in 来指定应该包括哪些文件类型并且效果很好。
如何告诉 MANIFEST.in 排除包中任意位置的特定文件夹?
编辑: 我试图排除一个 目录 ,而不仅仅是一个文件。清单中有几个选项可以排除文件,例如 global-exclude
或 recursive-exclude
。但是没有global-exclude-dir
选项,这就是我在这里问的原因。
我的 setup.py 看起来像这样:
from setuptools import setup, find_packages
setup(
name='my_package',
version='0.0.1',
install_requires=[
'importlib-metadata; python_version == "3.8"',
],
include_package_data=True,
package_dir={"my_package": "contrib"}, # renamed src to contrib
)
清单包含以下内容:
global-include *.npy *.npz
global-include *.txt
# [+ current exclude-directory test]
global-include
命令按预期工作。我尝试了以下排除任何 __pycache__
目录(感谢@phd 的建议):
prune __pycache__
prune */__pycache__
recursive-exclude */__pycache__ *
此 post 的目标是包含 pip 包中的所有 __pycache__
目录。这实际上是不可能的,因为每个 __init__.py
在创建清单后都会创建一个 __pycache__
目录。
对于任何在使用 MANIFEST.in 构建轮子时寻找如何排除文件夹的答案的人,phd posted 的两个建议都有效:
prune */__pycache__
recursive-exclude */__pycache__ *
prune __pycache__
仅修剪 top-level __pycache__
。要在目录层次结构中的任何位置修剪 __pycache__
,请使用
prune */__pycache__