无需Poetry:如何通过pyproject.toml配置Python项目导入路径
不使用包管理器解决Python模块导入问题
针对你的项目目录结构,要让Python识别src/API为包并避免ModuleNotFoundError,可以按以下步骤操作:
1. 把src/API转为合法Python包
在src/API目录下创建一个空的__init__.py文件,Python会自动将包含该文件的目录识别为可导入的包。调整后的目录结构:
main_directory/ ├── main.py ├── pyproject.toml └── src/ └── API/ ├── __init__.py ├── fileA.py └── fileB.py
2. 修改pyproject.toml配置
编辑pyproject.toml,添加setuptools相关配置,让Python能定位到src下的包:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "your-project" # 替换为你的项目名称 version = "0.1.0" # 版本号可按需修改 [tool.setuptools.packages.find] where = ["src"] # 指定从src目录查找包 include = ["API*"] # 匹配API包及其子包
3. 调整导入语句
- 在
fileA.py中,导入fileB.py有两种可选方式:- 包内相对导入(推荐):
from . import fileB - 绝对导入:
from API import fileB
- 包内相对导入(推荐):
- 在
main.py中,导入fileA.py使用绝对导入:from API import fileA
备选方案(无需修改配置文件)
如果不想配置pyproject.toml,可以在main.py开头添加代码,手动将src目录加入Python路径:
import sys from pathlib import Path # 获取当前脚本所在目录,拼接src路径并加入Python路径 sys.path.append(str(Path(__file__).parent / "src"))
这种方式不需要额外配置文件,但仅对main.py生效,若要在其他脚本中正常导入,需在对应脚本中添加类似代码。
内容的提问来源于stack exchange,提问作者edge selcuk
相关产品推荐
相关产品推荐

