问题出现
之前正在学习Django框架,准备自己写个网站练习下。刚刚写了部分页面之后,电脑的python环境突然崩掉了,现在也不知道原因,所以我就重新安装的python和Djando等一系列包。之后启动Django发现启动报错。
报错一:
报错二:
错误二是我在cmd中模拟出来的,之前的图忘记截了,也是这样 不是内部或外部命令的错。‘sss’实际报错中为乱码。
分析及解决
我之前是可运行的,所以我认为是新装的python环境配置问题。所以重新修改了电脑环境,发现没有作用。
查看错误信息:
Traceback (most recent call last):
File ".\manage.py", line 22, in <module>
main()
File ".\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "F:\Python\DLLs\lib\site-packages\django\core\management\__init__.py", line 422, in execute_from_command_line
utility.execute()
File "F:\Python\DLLs\lib\site-packages\django\core\management\__init__.py", line 415, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "F:\Python\DLLs\lib\site-packages\django\core\management\base.py", line 355, in run_from_argv
self.execute(*args, **cmd_options)
File "F:\Python\DLLs\lib\site-packages\django\core\management\commands\runserver.py", line 61, in execute
super().execute(*args, **options)
File "F:\Python\DLLs\lib\site-packages\django\core\management\base.py", line 399, in execute
output = self.handle(*args, **options)
File "F:\Python\DLLs\lib\site-packages\django\core\management\commands\runserver.py", line 96, in handle
self.run(**options)
File "F:\Python\DLLs\lib\site-packages\django\core\management\commands\runserver.py", line 103, in run
autoreload.run_with_reloader(self.inner_run, **options)
File "F:\Python\DLLs\lib\site-packages\django\utils\autoreload.py", line 647, in run_with_reloader
exit_code = restart_with_reloader()
File "F:\Python\DLLs\lib\site-packages\django\utils\autoreload.py", line 266, in restart_with_reloader
p = subprocess.run(args, env=new_environ, close_fds=False)
File "F:\Python\Lib\subprocess.py", line 423, in run
with Popen(*popenargs, **kwargs) as process:
File "F:\Python\Lib\subprocess.py", line 729, in __init__
restore_signals, start_new_session)
File "F:\Python\Lib\subprocess.py", line 1017, in _execute_child
startupinfo)
OSError: [WinError 87] 参数错误。
按照报错信息逐个查看源代码,发现源文件autoreload.py中有获取python解释器路径拼接参数的语句
打印输出args参数值到控制台看下。
结果:
结果是空,没有拿到python解释器的执行文件。
我百度了下这个函数sys.executable为空的原因,暂时没有找到。
于是为了能够暂时使用我修改了源代码,增加了sys.executable=‘本地python解释器路径’
然后启动Django
前台:
这样只能暂时解决,这个问题归根结底还是我python环境问题,之后我真正完全解决,在补充。
最后
本来前两天就分析源码来着,不过看一会就没有耐心了,只到拖了两天之后才耐着心看下去。解决问题(虽然还未完全解决),还是有些成就感的。希望自己以后越来越好,大家也越来越好。把这个发出来希望给也遇到这类问题的朋友一些参考。
感谢阅读