#32202: django-admin runserver and get_child_arguments -------------------------------------+------------------------------------- Reporter: andrey- | Owner: nobody zotov | Type: Bug | Status: new Component: Core | Version: 3.1 (Management commands) | Severity: Normal | Keywords: Triage Stage: | Has patch: 0 Unreviewed | Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -------------------------------------+------------------------------------- "django-admin runserver" fails with the following error:
{{{ Traceback (most recent call last): File "c:\users\someone\appdata\local\programs\python\python37\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "c:\users\someone\appdata\local\programs\python\python37\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Users\someone\AppData\Local\Programs\Python\Python37\Scripts \django-admin.exe\__main__.py", line 7, in <module> File "c:\users\someone\appdata\local\programs\python\python37\lib\site- packages\django\core\management\__init__.py", line 401, in execute_from_command_line utility.execute() File "c:\users\someone\appdata\local\programs\python\python37\lib\site- packages\django\core\management\__init__.py", line 395, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "c:\users\someone\appdata\local\programs\python\python37\lib\site- packages\django\core\management\base.py", line 330, in run_from_argv self.execute(*args, **cmd_options) File "c:\users\someone\appdata\local\programs\python\python37\lib\site- packages\django\core\management\commands\runserver.py", line 61, in execute super().execute(*args, **options) File "c:\users\someone\appdata\local\programs\python\python37\lib\site- packages\django\core\management\base.py", line 371, in execute output = self.handle(*args, **options) File "c:\users\someone\appdata\local\programs\python\python37\lib\site- packages\django\core\management\commands\runserver.py", line 96, in handle self.run(**options) File "c:\users\someone\appdata\local\programs\python\python37\lib\site- packages\django\core\management\commands\runserver.py", line 103, in run autoreload.run_with_reloader(self.inner_run, **options) File "c:\users\someone\appdata\local\programs\python\python37\lib\site- packages\django\utils\autoreload.py", line 616, in run_with_reloader exit_code = restart_with_reloader() File "c:\users\someone\appdata\local\programs\python\python37\lib\site- packages\django\utils\autoreload.py", line 244, in restart_with_reloader p = subprocess.run(args, env=new_environ, close_fds=False) File "c:\users\someone\appdata\local\programs\python\python37\lib\subprocess.py", line 488, in run with Popen(*popenargs, **kwargs) as process: File "c:\users\someone\appdata\local\programs\python\python37\lib\subprocess.py", line 800, in __init__ restore_signals, start_new_session) File "c:\users\someone\appdata\local\programs\python\python37\lib\subprocess.py", line 1148, in _execute_child args = list2cmdline(args) File "c:\users\someone\appdata\local\programs\python\python37\lib\subprocess.py", line 555, in list2cmdline needquote = (" " in arg) or ("\t" in arg) or not arg TypeError: argument of type 'WindowsPath' is not iterable }}} Environment: Windows 10 Python: 3.7.6 Django: 3.1.3 Steps to reproduce: {{{ django-admin startproject mysite set PYTHONPATH=<thelocaldir> django-admin runserver --settings=mysite.settings }}} Apparently django.utils.autoreload.get_child_arguments returns WindowsPath("C:\Users\someone\AppData\Local\Programs\Python\Python37\Scripts \django-admin.exe") as the first argument, and subprocess.Popen expects a string and is not able to use Path. The following monkey-patch fixes the error: {{{ def get_child_arguments_override(): args = autoreload._get_child_arguments() for i, arg in enumerate(args): if isinstance(arg, Path): args[i] = str(arg) return args autoreload._get_child_arguments = autoreload.get_child_arguments autoreload.get_child_arguments = get_child_arguments_override }}} -- Ticket URL: <https://code.djangoproject.com/ticket/32202> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/055.fc69bbb51da7b5fb34d8c9e2e9ceea22%40djangoproject.com.