管理.pycollectstatic:错误:无法识别的参数:D启动的shell脚本中的noinput

2024-04-25 22:47:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从shell脚本在Docker容器中启动django tornado混合应用程序,并将--noinput作为django命令的未识别参数:

usage: manage.py collectstatic [-h] [--version] [-v {0,1,2,3}]
                               [--settings SETTINGS] [--pythonpath PYTHONPATH]
                               [--traceback] [--no-color] [--noinput]
                               [--no-post-process] [-i PATTERN] [-n] [-c] [-l]
                               [--no-default-ignore]
manage.py collectstatic: error: unrecognized arguments: --noinput

为什么我会得到--noinput作为无法识别的参数?我的Dockerfile调用了一个部署shell脚本,该脚本执行collectstatic和{}命令(都带有--noinput参数,这两个参数都失败了。我尝试过删除无关的行,调整命令周围的空白,等等,但都没有用。我可以在本地运行shell脚本而不会出现任何问题;它似乎只是在调用shell脚本的Docker container RUN调用中出现问题。在

Dockerfile文件:

^{pr2}$

在部署.sh以下内容:

#!/bin/sh
python manage.py collectstatic --noinput
python manage.py migrate --noinput
python main.py

如果我用RUN python manage.py collectstatic --noinput在Dockerfile中运行django命令,没有问题,但是我试图在CMD调用中获取特定于应用程序的命令,因为我需要从Elastic Beanstalk为我的部署环境提供数据库环境变量。在


Tags: djangodockernorunpy命令dockerfile脚本
1条回答
网友
1楼 · 发布于 2024-04-25 22:47:04

看来我的问题是shell脚本中的行尾。我认为sh正在将 noinput\R输入python,因此它在终端中显示为看起来像 noinput,但实际上它得到了一个匹配的CR字符。在

当我在本地测试时,它是在Docker Quickstart终端(它工作的地方),Docker容器总是在Ubuntu中运行(它失败了)。在

我以前也遇到过这种情况,在Windows上编写的shell脚本中不同的行结尾会在Linux环境中造成混乱,我需要记住在编辑器中正确设置行结尾是多么重要。。。在

相关问题 更多 >