PyCharm项目中api.py导入classA的路径原理及疑问
Python包导入原理及问题解析
你使用的导入语句原理
from src.classA import classA as a 能成功运行,核心逻辑如下:
- 因为
src目录下存在__init__.py文件,Python会将其识别为合法的可导入包。 src.classA表示定位到src包下的classA.py模块(对应你的源代码文件)。import classA as a是将classA.py文件中定义的classA类单独导入,并给它设置别名a,后续直接用a就能调用这个类。
为何无法直接导入classA
直接写import classA行不通,原因有两点:
- 路径查找规则限制:Python导入模块时,只会在当前脚本(
api.py)的同级目录、系统PYTHONPATH配置的路径里查找目标模块。你的classA.py在src子目录中,不在Python默认查找的范围内,所以会提示找不到模块。 - 模块与类的区分:就算你手动把
src加到PYTHONPATH里,直接import classA也只是导入classA.py这个模块文件,而非里面的classA类——此时你得通过classA.classA才能访问到目标类,远不如你用的导入方式直接。
内容的提问来源于stack exchange,提问作者gilraen
相关产品推荐
相关产品推荐

