>  Q&A  >  본문

python - 刚创建项目 django manage.py runserver 报错UnicodeEncodeError:'mbcs'

win10系统,python 3.5.2, djang 1.10.3
刚刚创建django项目

C:\Users\JD\Desktop\firstsite>python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python35\lib\site-packages\django\core\management\__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "C:\Python35\lib\site-packages\django\core\management\__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python35\lib\site-packages\django\core\management\base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Python35\lib\site-packages\django\core\management\commands\runserver.py", line 58, in execute
    super(Command, self).execute(*args, **options)
  File "C:\Python35\lib\site-packages\django\core\management\base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "C:\Python35\lib\site-packages\django\core\management\commands\runserver.py", line 97, in handle
    self.run(**options)
  File "C:\Python35\lib\site-packages\django\core\management\commands\runserver.py", line 106, in run
    autoreload.main(self.inner_run, None, options)
  File "C:\Python35\lib\site-packages\django\utils\autoreload.py", line 334, in main
    reloader(wrapped_main_func, args, kwargs)
  File "C:\Python35\lib\site-packages\django\utils\autoreload.py", line 305, in python_reloader
    exit_code = restart_with_reloader()
  File "C:\Python35\lib\site-packages\django\utils\autoreload.py", line 291, in restart_with_reloader
    exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)
UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: invalid character

网上没有搜出成功又可解决我的问题的办法。
但有别人成功却不能解决我的:

http://stackoverflow.com/ques... 或者 https://segmentfault.com/q/10...
在~Python35\lib\site-packages\django\utils\autoreload.py中添加

new_environ['PATH']=os.path.abspath(new_environ['PATH'].replace('\u202a', ''))

也可尝试添加

new_environ['PATH'] = os.path.abspath(new_environ['PATH'].encode('ascii', 'replace'))

但这两种方法都不能解决的问题。

希望有经验的同学能够看到我的问题并好心解答
谢谢

迷茫迷茫2764일 전1130

모든 응답(1)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-18 09:56:03

    제가 직접 해결했습니다.
    주된 문제는 C:Python35Libsite-packagesdjangoutils로 이동하여 autoreload.py 파일을 찾는 것입니다.
    위치: autoreload.py --- restart_with_reloader 함수. 최종 채택된 코드는 다음과 같습니다.

    으아악

    조금 지저분해 보이지만, 하나씩 출력해서 어떤 것이 문제인지 살펴보자는 의미입니다.
    new_environ의 CLASSPATH 필드에 문제가 있음을 발견했습니다.

    으아악

    그래서 그 안에 있는 U202a를 제거할 수 있는 방법을 찾으려고 노력했지만 나중에는 제거할 수 없었습니다(마법처럼 별도의 위치 지정 print(new_environ['CLASSPATH'])에 u202a가 없기 때문에 젠장). 그냥 del로 지웠어요.
    그렇습니다. 성공했습니다

    회신하다
    0
  • 취소회신하다