如何阻止pip编译项目中作为资源文件的Python源文件?
解决Package Data中Python模板文件被字节编译的问题
直接解决方案:配置byte-compile-exclude
修改你的pyproject.toml,添加byte-compile-exclude配置项,精准排除init-pages目录下的所有.py模板文件:
[tool.setuptools] packages = [ "linton", "linton.subcommand", ] # 排除init-pages下的所有.py文件,避免被字节编译 byte-compile-exclude = ["linton/init-pages/**/*.py"] [tool.setuptools.package-data] linton = ["init-pages/**"]
原理说明
默认情况下,setuptools会对包内所有.py文件(包括标记为package data的文件)执行字节编译操作,这就是你看到init-pages下的模板文件被编译的原因。
通过byte-compile-exclude配置,你可以指定不需要编译的文件路径通配符,既不会影响项目正常Python模块的编译,也能阻止模板资源文件生成.pyc和__pycache__目录。
备选方案(若不修改配置)
如果不想调整setuptools配置,也可以修改模板文件的扩展名(比如把.py改成.py.in),然后在linton init命令复制文件时,再将扩展名改回.py。这种方法需要调整资源文件名和命令逻辑,不如配置方案直接高效。
内容的提问来源于stack exchange,提问作者Reuben Thomas
相关产品推荐
相关产品推荐

