使用Pants运行Django项目遭遇ModuleNotFoundError求助
Django项目Pants构建配置问题
项目目录结构
a/b/c/d/ ├── e │ ├── BUILD.pants │ ├── myapp │ │ ├── BUILD.pants │ │ ├── migrations │ │ ├── models.py │ │ ├── ... │ │ └── tests │ ├── BUILD.pants │ ├── settings.py │ ├── ... │ └── wsgi.py ├── BUILD.pants ├── ... └── manage.py
问题背景
项目直接执行manage.py runserver可正常运行,但因使用相对导入导致Pants和Pyright报错,切换为绝对导入后,直接运行Django失效。通过Pants启动服务时出现模块找不到的错误。
当前配置
a/b/c/d目录下的BUILD.pants内容:
python_sources() pex_binary( name="manage", entry_point="manage.py", dependencies=["a/b/c/d/e"], restartable=True, )
报错情况
执行命令 ./pants run a/b/c/d:manage -- runserver --noreload 时,触发错误:
ModuleNotFoundError: No module named 'd'
manage.py中关键配置代码:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'b.c.d.e.settings')
注:仓库内所有绝对导入均基于b目录,但文件实际存储在a/b路径下。修改该导入路径仅会更换报错的模块名称,问题本质未解决。
已尝试操作
- 参考服务型架构的示例仓库调整配置,无效
- 添加
--noreload参数,无效 - 调整构建文件后,执行
./pants dependencies显示依赖关系正确
本人完全不熟悉Pants,不清楚如何正确配置pex_binary()和python_sources(),恳请指导。
内容的提问来源于stack exchange,提问作者artificialask
相关产品推荐
相关产品推荐

