#32783: Recent commit causes issues when running manage.py as a script in a 
conda
env. Django 3.2.3
---------------------------------------------+------------------------
               Reporter:  JonathanNickelson  |          Owner:  nobody
                   Type:  Bug                |         Status:  new
              Component:  Utilities          |        Version:  3.2
               Severity:  Normal             |       Keywords:
           Triage Stage:  Unreviewed         |      Has patch:  0
    Needs documentation:  0                  |    Needs tests:  0
Patch needs improvement:  0                  |  Easy pickings:  1
                  UI/UX:  0                  |
---------------------------------------------+------------------------
 The changes in this commit
 
https://github.com/django/django/commit/ec6d2531c59466924b645f314ac33f54470d7ac3
 to def get_child_arguments() of django/utils/autoreload.py cause a crash
 when running manage.py as a script from a conda env. For example:

 {{{miniconda3/envs/promotion_tool_38/bin/manage.py runserver
 10.12.123.45:8183}}} no longer works and gives this stacktrace:
 {{{
 Traceback (most recent call last):
   File "miniconda3/envs/promotion_tool_38/bin/manage.py", line 4, in
 <module>
     __import__('pkg_resources').run_script('promotion-tool==1.0.28',
 'manage.py')
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/pkg_resources/__init__.py", line 651, in run_script
     self.require(requires)[0].run_script(script_name, ns)
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/pkg_resources/__init__.py", line 1448, in run_script
     exec(code, namespace, namespace)
   File
 "/site/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/promotion_tool-1.0.28-py3.7.egg/EGG-
 INFO/scripts/manage.py", line 21, in <module>
     main()
   File
 "/site/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/promotion_tool-1.0.28-py3.7.egg/EGG-
 INFO/scripts/manage.py", line 17, in main
     execute_from_command_line(sys.argv)
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/core/management/__init__.py", line 419, in
 execute_from_command_line
     utility.execute()
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/core/management/__init__.py", line 413, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/core/management/base.py", line 354, in run_from_argv
     self.execute(*args, **cmd_options)
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/core/management/commands/runserver.py", line 61, in
 execute
     super().execute(*args, **options)
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/core/management/base.py", line 398, in execute
     output = self.handle(*args, **options)
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/core/management/commands/runserver.py", line 96, in
 handle
     self.run(**options)
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/core/management/commands/runserver.py", line 103, in
 run
     autoreload.run_with_reloader(self.inner_run, **options)
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/utils/autoreload.py", line 639, in run_with_reloader
     exit_code = restart_with_reloader()
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/utils/autoreload.py", line 256, in
 restart_with_reloader
     args = get_child_arguments()
   File "/home/srv_jaxqa/miniconda3/envs/promotion_tool_38/lib/python3.8
 /site-packages/django/utils/autoreload.py", line 225, in
 get_child_arguments
     if __main__.__spec__ is not None and __main__.__spec__.parent:
 AttributeError: module '__main__' has no attribute '__spec__'
 }}}
 The work around for this is to explicitly call the actual manage.py inside
 the EGG-INFO like this:
 {{{
 ~/miniconda3/envs/promotion_tool_38/lib/python3.8/site-
 packages/promotion_tool-1.0.28-py3.7.egg/EGG-INFO/scripts/manage.py
 runserver 10.12.123.45:8183
 }}}
 After reverting the changes locally found in this method
 "get_child_arguments" in django/utils/autoreload.py in the commit above,
 the command {{{miniconda3/envs/promotion_tool_38/bin/manage.py runserver
 10.12.123.45:8183}}} works again, or if inside the conda env then just
 {{{manage.py runserver 10.12.123.45:8183}}} works.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/32783>
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/060.0cd75b7432560fccb5ce91c22ac3b84e%40djangoproject.com.

Reply via email to