Poetry run执行./manage.py报错找不到文件的问题求助
问题根源分析与解决办法
可能的根源
- Poetry版本变更:重装系统后安装的Poetry版本与之前不同,新版本对
poetry run执行相对路径脚本的解析逻辑调整,不再默认识别当前目录下的脚本。 - Shebang与虚拟环境不兼容:脚本的
#! /usr/bin/env python指向系统或其他环境的Python,而poetry run强制使用虚拟环境Python,二者上下文不匹配导致路径解析失败。 - 环境变量PATH缺失当前目录:重装系统后用户环境变量
PATH未包含当前目录(.),poetry run执行时无法通过相对路径找到脚本。
解决步骤
- 替代方案(最直接):放弃直接执行脚本的方式,改用
poetry run python manage.py runserver,绕开路径解析问题,确保调用虚拟环境的Python执行脚本。 - 调整Poetry版本:
- 查看当前版本:
poetry --version - 降级到之前稳定版本(如1.3.2):
curl -sSL https://install.python-poetry.org | python3 - --version 1.3.2 - 或升级到最新版本确认是否修复:
poetry self update
- 查看当前版本:
- 修改Shebang路径:
- 获取虚拟环境Python路径:
poetry run which python - 将
manage.py的shebang替换为上述路径,例如:#! /home/xxx/.cache/pypoetry/virtualenvs/my-project/bin/python - 再次尝试
poetry run ./manage.py runserver。
- 获取虚拟环境Python路径:
- 临时添加当前目录到PATH:
(注:不推荐永久将PATH="$PATH:." poetry run ./manage.py runserver.加入PATH,存在安全风险)
内容的提问来源于stack exchange,提问作者alexakarpov
相关产品推荐
相关产品推荐

