无法通过MANIFEST.in排除隐藏目录.idea的技术问题
解决pip打包时排除.idea隐藏目录的问题
你原来的prune */.idea只匹配一级子目录下的.idea文件夹,如果.idea在项目根目录或者更深层级的子目录里,这个规则就不生效。针对隐藏目录的递归排除,可通过以下方法解决:
方法1:修改MANIFEST.in使用递归匹配模式
把原来的prune */.idea替换成prune **/.idea,完整的MANIFEST.in内容如下:
prune **/.idea prune */__pycache__ global-exclude *.py[co]
**/会递归匹配任意层级的父目录,不管.idea在根目录还是嵌套子目录里,都能被匹配并排除。
如果prune规则仍不生效,试试recursive-exclude的完整递归写法:
recursive-exclude **/.idea * prune */__pycache__ global-exclude *.py[co]
这个规则会递归找到所有.idea目录,并排除里面的所有文件和子目录。
方法2:结合setup.py的exclude_package_data参数
如果MANIFEST.in的规则依然没起作用,可以在setup.py里显式添加排除规则,双重保障:
from setuptools import setup setup( # 你的包名、版本等其他参数... exclude_package_data={ '': ['**/.idea/*'], # 排除所有目录下的.idea文件夹内容 } )
验证生效情况
执行打包命令前,可用python setup.py sdist --dry-run预览会被打包的文件,确认.idea目录已被排除后再正式打包。
内容的提问来源于stack exchange,提问作者trb
相关产品推荐
相关产品推荐

