【问题标题】:PyCharm Django project fails to run with debuggingPyCharm Django 项目无法通过调试运行
【发布时间】:2017-04-23 09:27:29
【问题描述】:

很长一段时间以来,我在我的 Windows 10 机器上遇到了这个奇怪的问题。当尝试在 PyCharm 上进行调试(有时甚至没有)启动 Django 服务器时,我收到此错误:

...
pydev debugger: process 10532 is connecting
Connected to pydev debugger (build 163.8233.8)
Process finished with exit code -1073741819 (0xC0000005)

不调试就是这样的:

"C:\Program Files (x86)\PyCharm\bin\runnerw.exe" D:\project\env\Scripts\python.exe D:/project/manage.py runserver 80

Process finished with exit code -1073741819 (0xC0000005)

最奇怪的是,如果我重新运行,某些时候(大约 4-6 次重新运行 1 次成功)它会成功启动。如果没有 PyCharm,我也无法重现此问题。

规格:Windows 10 Pro、Pycharm(发生在 5.x 到 2016.3 版本上)x86 和 x64 版本、Python 3.5x、Django 1.8-1.10.x。

任何想法为什么会发生这种情况或如何获得有关崩溃的更详细信息?

编辑这是事件查看器报告错误的内容:

Faulting application name: python.exe, version: 3.5.1150.1013, time stamp: 0x566391f0
Faulting module name: ucrtbase.dll, version: 10.0.14393.0, time stamp: 0x57898db2
Exception code: 0xc0000005
Fault offset: 0x000b6d95
Faulting process ID: 0x1b30
Faulting application start time: 0x01d251286ca8ada3
Faulting application path: D:\project\env\Scripts\python.exe
Faulting module path: C:\WINDOWS\System32\ucrtbase.dll
Report ID: b23376d6-cf66-4d83-8781-cd22311e0f9e
Faulting package full name: 
Faulting package-relative application ID: 

EDIT 2 我已经缩小了问题的范围。在此语句之后,错误似乎源自autoreload.py 中的restart_with_reloader

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 line crashes the whole script
        # I guess the problem arises in native code
        exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)
        # debugger disconnects here

        if exit_code != 3:
            return exit_code

也许 Python 社区的某个人看到过类似的东西?

【问题讨论】:

  • 如果您运行多个服务器实例(侦听同一端口号),您可能会遇到问题。确保在启动之前停止所有正在运行的应用程序。
  • 您的 Python 可执行文件 (D:\project\env\Scripts\python.exe) 调用模块 C:\WINDOWS\System32\ucrtbase.dll,并引发异常。我建议你再次创建你的 virtualenv 并重试。
  • 不,一个服务器,一个端口,一个 PyCharm 实例......你可以从路径中猜到,我使用的是 virtualenv。
  • 你在命令行上是否有相同的行为(在 PyCharm 之外)?
  • 正如我在帖子中提到的,问题仅在运行 with PyCharm 时仍然存在。

标签: python django pycharm jetbrains-ide


【解决方案1】:

tl;dr 解决方案

Environment variablesRun/Debug Configurations 对话框中添加这对:

=C:c:\''


我已向 JetBrains YouTrack 提交了票证,这实际上是 Windows 如何处理命令行环境变量的问题。您可以在此处找到该问题的解决方法:https://youtrack.jetbrains.com/issue/PY-17069

JetBrains 开发评论摘录:

伙计们,我刚刚在 Windows 和 Microsoft CRT 中发现了一个错误:) 尝试将以下环境变量添加到运行配置中的环境变量 =C: = c:`` 是的,=C: 是 NAME 而 c:`` 是值。

【讨论】:

  • 这让我做噩梦了。该错误仅适用于 Windows 10 AFAIK。环境设置在您的运行配置中。
  • 这让我很难过。很好的发现!
  • @Jesuisme Windows 8/8.1 仍然存在同样的问题。
  • @Crossfire 感谢您的更新。我团队中使用 Windows 7 Pro 的其他人没有这个问题。也许它的机器特定。
【解决方案2】:

我对 PyCharm 和 Django 也有同样的问题。这是由于在 PyCharm 下运行 Django 的自动重新加载功能引起的。我按照 Jithin Pavithran 在评论中的建议以管理员身份运行 PyCharm,问题得到解决。你也可以在 PyCharm Django 服务器配置中开启“No reload”。

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多