Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以用一个文件夹来代替Django自定义命令的文件吗?_Python_Django_Command_Structure_Customization - Fatal编程技术网

Python 我可以用一个文件夹来代替Django自定义命令的文件吗?

Python 我可以用一个文件夹来代替Django自定义命令的文件吗?,python,django,command,structure,customization,Python,Django,Command,Structure,Customization,我知道创建自定义Django命令的唯一方法是将该文件放入project/app/management/commands文件夹中,如下所示project/app/management/commands/my_custom_command.py 但是我想知道是否有一种方法可以创建一个目录(比如python包)而不是一个文件。应该是这样的: project ├── app | ├── management | | └── commands | | ├── my_custom

我知道创建自定义Django命令的唯一方法是将该文件放入
project/app/management/commands
文件夹中,如下所示
project/app/management/commands/my_custom_command.py

但是我想知道是否有一种方法可以创建一个目录(比如python包)而不是一个文件。应该是这样的:

project
├── app
|   ├── management
|   |   └── commands
|   |       ├── my_custom_command
|   |       |   ├── __init__.py
|   |       |   └── ... (other stuff like settings and output files)
|   |       └── ...
|   └── ...
├── manage.py
└── ...
有没有办法做那样的事?我认为通过将命令保存在app文件夹中,可以使用整个app文件夹执行类似的操作,但我不喜欢这种解决方案


澄清:我已经尝试使用带有
\uuuu init\uuuuuuupy.py
文件的文件夹,但它不起作用。

这是不可能的,包被排除在外,请参阅
django.core.management.find\u命令

在Django 3.1.5中,它是:

def find_commands(management_dir):
    """
    Given a path to a management directory, return a list of all the command
    names that are available.
    """
    command_dir = os.path.join(management_dir, 'commands')
    return [name for _, name, is_pkg in pkgutil.iter_modules([command_dir])
            if not is_pkg and not name.startswith('_')]