【发布时间】:2017-04-14 17:43:25
【问题描述】:
我想在我创建的项目中修改我的帮助选项。 我把 argparse 放在 manage.py 文件中,像这样
parser = argparse.ArgumentParser(
description="Some desc",
formatter_class=argparse.RawTextHelpFormatter
)
args = parser.parse_args()
print(args)
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Reporter.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)
但是当我运行 python manage.py -h 时它可以正常工作(帮助显示),但是当我运行 python manage.py runserver 时,我得到:manage.py: error: unrecognized arguments: runserver
如何解决这个问题呢?我真的不知道如何修改 -h 选项。
我应该把 argparse 代码放在哪里以获得这个 django 项目的帮助?我知道我可以使用自己的命令,但是在我发出 python manage.py -h 之后获得帮助对我来说很重要
编辑:
在 cmets 的帮助下,我创建了:
#!/usr/bin/env python
def help_parser():
import argparse
parser = argparse.ArgumentParser("Some desc",
formatter_class=argparse.RawTextHelpFormatter
)
args = parser.parse_args()
print(args[0])
def main():
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Reporter.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)
if __name__ == "__main__":
import sys
if sys.argv[1] == '-h':
help_parser()
else:
main()
【问题讨论】: