PyCharm调试Django项目无法运行

5

我在我的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: 

编辑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社区中的某些人已经看到过类似的东西?


如果您运行多个实例的服务器(监听相同的端口号),则可能会出现问题。在启动之前,请确保停止所有正在运行的应用程序。 - Laurent LAPORTE
你的Python可执行文件(D:\project\env\Scripts\python.exe)调用了模块C:\WINDOWS\System32\ucrtbase.dll,并引发了异常。我建议你重新创建虚拟环境并重试。 - Laurent LAPORTE
不,一个服务器,一个端口,一个PyCharm实例...从路径可以猜出来,我正在使用virtualenv。 - Crossfire
错误可能意味着“您尝试访问无权访问的内存空间”。您能发布您的配置吗?当您以管理员身份运行PyCharm时是否出现该错误? - Jithin Pavithran
我还没有尝试以管理员身份运行它,但正如我已经提到的,有时服务器可以无错误运行(如果问题是用户提升,我可能无法做到这一点)。配置很简单:http://127.0.0.1:80DJANGO_SETTINGS_MODULE=ta.conf.settings.dev; PYTHONUNBUFFERED=1,Python 3.5.1与virtualenv。 - Crossfire
显示剩余2条评论
2个回答

9

简短解决方案

运行/调试配置对话框中的环境变量中添加这一对:

=C: c:\''

enter image description here


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

摘自JetBrains开发人员的评论:

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


1
这让我噩梦连连。据我所知,这个 bug 只出现在 Windows 10 上。环境设置在您的运行配置中。 - Jesuisme
1
这让我困惑了。不错的发现! - Korijn
1
@Jesuisme 在Windows 8/8.1中仍然存在同样的问题。 - Crossfire
@Crossfire 感谢更新。我的团队中使用 Windows 7 Pro 的其他人没有这个问题。也许是机器特定的问题。 - Jesuisme

0

我在使用PyCharm和Django时遇到了同样的问题。这是由于在PyCharm下运行Django的自动重载功能引起的。像Jithin Pavithran在评论中建议的那样,我以管理员身份运行PyCharm,问题得到了解决。您也可以在PyCharm Django服务器配置中打开“无重载”选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接