python - Python 3 导入与内部“解析器”冲突
问题描述
.
├── gen.py
├── lexer
│ ├── engine.py
| └── ...
└── parser
├── engine.py
└── ...
我正在编写我的编译器项目,但现在我遇到了 python 导入冲突。在 gen.py 中,我想导入一些代码生成函数,比如
import lexer.engine # OK
import parser.engine # ModuleNotFoundError: No module named 'parser.engine'; 'parser' is not a package
经过一番调查,我了解到“解析器”是为 python 内部解析器保留的。但我无法更改目录名称“解析器”,因为它已在任何地方使用。
我该如何解决这个问题?
解决方案
要被接受为 Python 包,目录必须有一个__init__.py
文件。
可以像包是常规模块一样访问此文件中声明的变量。它也可以是空的。
tl; dr:将一个空__init__.py
文件添加到目录中,它应该可以工作。
推荐阅读
- python - 将字符串中的时间段转换为等效的数字天数
- python - conda 升级 python 版本并删除旧版本
- java - 查找以某个单词开头和结尾的子字符串
- protocols - 为什么数据不能写在 ASB 的基地址 +1 上
- node.js - 当在黄瓜步骤 def 中递归调用 promise 函数时,promise 返回 timdeout 5000ms
- python - 使用 Matplotlib 在 python 中设置 y 轴的顺序
- java - 让 Quarkus 健康检查在应用程序以外的另一个端口上运行
- javascript - 将箭头函数和 event.target 与事件处理程序一起使用来获取范围而不是普通函数和 this 关键字?
- python - Matlab 到 python 嵌套循环的转换
- python - 在 Python 中按字典顺序生成字符串