Opened 14 years ago
Closed 14 years ago
#14953 closed (duplicate)
New find_commands(management_dir) to support .pyc and .pyo
Reported by: | anonymous | Owned by: | nobody |
---|---|---|---|
Component: | Core (Other) | Version: | 1.2 |
Severity: | Keywords: | find_commands | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
In django/core/management/init.py:
def find_commands(management_dir): """ Given a path to a management directory, returns a list of all the command names that are available. Returns an empty list if no commands are defined. """ command_dir = os.path.join(management_dir, 'commands') try: return [f[:-3] for f in os.listdir(command_dir) if not f.startswith('_') and f.endswith('.py')] except OSError: return []
In our environment, We compile all .py to .pyc, and then remove all .py.
Then manage.py can't find our commands because find_commands only find .py.
Here is a modified version for find_command:
def find_commands(management_dir): """ Given a path to a management directory, returns a list of all the command names that are available. Returns an empty list if no commands are defined. """ command_dir = os.path.join(management_dir, 'commands') ret = {} try: filenames = os.listdir(command_dir) for filename in filenames: if filename.startswith('_'): continue if filename.endswith('.py'): modname = filename[:-3] elif filename.endswith('.pyc') or filename.endswith('.pyo'): modname = filename[:-4] else: modname = None if modname: ret[modname] = 1 except OSError: pass return ret.keys()
Note:
See TracTickets
for help on using tickets.
Dup of #14952