如何让Black格式化工具忽略符号链接以避免无限循环?
解决Black遍历符号链接无限循环的问题
方案一:让Black跳过符号链接
直接通过--exclude参数指定要忽略的符号链接路径,避免Black进入无限递归:
poetry run black ./etl --exclude 'etl/raw/etl'
如果符号链接的路径有变化,只需调整--exclude后的匹配规则即可。另外,较新版本的Black支持--no-follow-symlinks参数,能直接阻止工具遍历符号链接:
poetry run black ./etl --no-follow-symlinks
方案二:移除符号链接,优化导入结构
符号链接并非实现绝对导入的最优方案,推荐通过以下方式从根源解决问题:
- 调整项目结构:将根目录的
config.py移动到etl文件夹下,此时raw.py里的from etl.config import MY_CONSTANT就能天然生效,完全不需要符号链接。 - 添加Python路径:在运行格式化命令前,将项目根目录加入Python环境变量
PYTHONPATH,示例:
这样Python会把根目录视为包搜索路径,export PYTHONPATH=$(pwd) poetry run black ./etlraw.py里可以直接用from config import MY_CONSTANT,同样无需依赖符号链接。
内容的提问来源于stack exchange,提问作者Matheus Schaly
相关产品推荐
相关产品推荐

