在windows 8.1上使用Django运行manage.py runserver时出错



我在任何地方都找不到这个exitcode,但希望你们中的一个人能帮助我,或者让我知道这是否是python/Django中的一个bug。

无论如何,首先是堆叠竞赛:

    Traceback (most recent call last):
  File "C:SitezooiSiteTestmanage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:Program FilesPythonlibsite-packagesdjangocoremanagement__init_
_.py", line 385, in execute_from_command_line
    utility.execute()
  File "C:Program FilesPythonlibsite-packagesdjangocoremanagement__init_
_.py", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:Program FilesPythonlibsite-packagesdjangocoremanagementbase.py
", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "C:Program FilesPythonlibsite-packagesdjangocoremanagementbase.py
", line 338, in execute
    output = self.handle(*args, **options)
  File "C:Program FilesPythonlibsite-packagesdjangocoremanagementcommand
srunserver.py", line 83, in handle
    self.run(*args, **options)
  File "C:Program FilesPythonlibsite-packagesdjangocoremanagementcommand
srunserver.py", line 92, in run
    autoreload.main(self.inner_run, args, options)
  File "C:Program FilesPythonlibsite-packagesdjangoutilsautoreload.py", l
ine 322, in main
    reloader(wrapped_main_func, args, kwargs)
  File "C:Program FilesPythonlibsite-packagesdjangoutilsautoreload.py", l
ine 293, in python_reloader
    exit_code = restart_with_reloader()
  File "C:Program FilesPythonlibsite-packagesdjangoutilsautoreload.py", l
ine 279, 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: inval
id character

请忽略这个奇怪的文件路径,我甚至试着直接把它放在C:\上。

这里还有另一个可能类似的堆栈溢出问题:使用编译函数时出现UnicodeEncodeError,但我使用的文件路径不像使用任何非英文字符。我在那里尝试了几种解决方案,但都不起作用。

运行之前在2.7.x中测试过的python 3.4.1.也不起作用。在linux(Ubuntu)上运行良好。

django项目没有什么特别之处,因为它只是一个空的startproject项目。

我遇到了同样的问题,我找到了解决方案。从我搜索的内容来看,它也发生在Windows 7&8.

如果你想更详细地知道我是如何解决的,请检查我在Django论坛上提交的罚单:manage.py runserver在Windows上出错(7/8/8.1)。

现在要解决错误,请打开此文件C:\Program Files\Python\lib\site packages\django\utils\autoreload.py(我使用您的代码作为参考)并添加就在您的错误之前的这行代码(第279行):

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

你现在的功能应该是这样的:

def restart_with_reloader():
    while True:
        args = [sys.executable] + ['-W%s' % o for o in sys.warnoptions] + sys.argv
        if sys.platform == "win32":
            args = ['"%s"' % arg for arg in args]
        new_environ = os.environ.copy()
        new_environ["RUN_MAIN"] = 'true'
        new_environ['PATH'] = os.path.abspath(new_environ['PATH'].replace('u202a', ''))
        exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)
        if exit_code != 3:
            return exit_code

现在再次尝试使用manage.py runserver。我希望这能解决你的问题不要觉得自己很孤独。

在我的案例中,它与PATH无关,似乎有一些非英语字符的CHROME_RESTART环境设置。从new_environ弹出它就成功了:

def restart_with_reloader():
    while True:
        args = [sys.executable] + ['-W%s' % o for o in sys.warnoptions] + sys.argv
        if sys.platform == "win32":
            args = ['"%s"' % arg for arg in args]
        new_environ = os.environ.copy()
        new_environ["RUN_MAIN"] = 'true'
        # This will prevent UnicodeEncodeError
        new_environ.pop("CHROME_RESTART", None)
        exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)
        if exit_code != 3:
            return exit_code

我试过这个

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

但它没有起作用。

我的解决方案是

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

希望它能帮助你!

UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1:invalid character

我在使用的Windows7上遇到了同样的问题

$ python manage.py runserver

以防万一,如果有人有像我一样的cyrillic计算机名,这正是导致你编码问题的原因。因此,解决方案是只使用拉丁字母符号重命名您的计算机。

我也遇到了同样的问题
原因是环境变量条目中的非拉丁字符
在我的情况下,它是某个文件夹的西里尔文名称,而我的windows最初是英文版本
所以发生了冲突。删除后,一切正常。

相关内容

  • 没有找到相关文章

最新更新