【问题标题】:Python IDLE subprocess error?Python IDLE子进程错误?
【发布时间】:2010-10-26 20:41:09
【问题描述】:

IDLE 的子进程没有生成 联系。要么 IDLE 无法启动 子进程或个人防火墙 软件阻止了连接。

不要认为有人问过这个问题——为什么在运行非常简单的程序时偶尔会出现这种情况——然后我必须去任务管理器并停止所有 Pythonw 进程才能让它再次工作?

这似乎随机发生在不同的代码位上——这是我目前正在做的——

f = open('money.txt')
currentmoney = float(f.readline())
print(currentmoney, end='')
howmuch = (float(input('How much did you put in or take out?:')))
now = currentmoney + howmuch
print(now)
f.close()
f = open('money.txt', 'w')
f.write(str(now))
f.close()

有时有效,有时无效!

【问题讨论】:

    标签: python python-3.x python-idle


    【解决方案1】:

    我有同样的错误。我重新启动了调制解调器,令我惊讶的是,它成功了!

    【讨论】:

      【解决方案2】:

      我在 2.7.3 中遇到了同样的问题。我发现当我在学习如何使用 tkinter 并制作了一个基本程序来打开一个窗口时,我将它命名为 Tkinter.py 并将它放在与我尝试使用 IDLE 运行的程序相同的文件夹中。它总是会编译名为 Tkinter 的程序并生成第二个编译文件。当我尝试运行我的其他程序时,我会收到错误消息。我将我的简单的打开窗口的程序重命名为别的东西并删除了编译的文件。我能够在 IDLE 的情况下运行该文件夹中的每个程序。

      【讨论】:

        【解决方案3】:

        我收到了同样的错误信息。导致我出现问题的原因是我将其中一个脚本命名为“string.py”。每次我尝试在同一目录中运行带有“string.py”的脚本时都会发生这种情况。

        【讨论】:

          【解决方案4】:

          简单。只需剪切所有扩展名为 .py 的文件,将它们粘贴到与 os 路径不同的位置,其中一个文件会导致此类错误。再次运行 IDLE。

          【讨论】:

            【解决方案5】:

            如果它看起来像真正的随机行为,则可能是多 CPU/核心问题。 您可以尝试将解释器关联性设置为固定 cpu,看看是否仍然出现此问题。

            谷歌搜索:imagecfg 进程关联 了解更多信息。

            【讨论】:

              【解决方案6】:

              您可以使用idle -n 来避免此类问题(尽管可能会遇到一些其他限制)。

              【讨论】:

              • 您愿意详细说明这是做什么的吗?我尝试了 RTFM,但发现没有提及。 docs.python.org/3.0/library/idle.html#command-line-usage
              • 不确定为什么文档中缺少它 - 查看源代码,Python 安装中的 idlelib/PyShell.py:-n 将 use_subprocess 设置为 False,因此 idle 在同一进程中运行用户的代码作为 shell 和 GUI,而不是使用子进程。
              • @Oddthinking 在最近的版本(2.7.11、3.4.4、3.5.1,2015 年 11 月/12 月)中,转到“帮助”、“IDLE 帮助”,您会看到 IDLE 文档的格式很好。单击目录,然后单击3.3 Running without a subprocess。这些版本的格式和目录是新的。
              • @TerryJanReedy:有趣的是(a)它没有出现在Command line usage 下,并且(b)它自 3.4 以来已被弃用。
              • 很好用。但我想使用 IDLE 的原因是因为我希望能够使用 Run Module 在控制台环境中打开我的代码,然后我可以在开发代码时与我的代码交互地工作。似乎在没有子进程的情况下运行会阻止此功能。您能为我想出其他解决方案吗?
              【解决方案7】:

              在 Python 3.0.1 中,我在使用 Ctrl-C 中断之前在 Idle 的 Python Shell 中运行的程序然后尝试运行脚本后遇到了该错误。

              同样在 3.0.1 中:假设您打开了两个空闲窗口:一个脚本打开以供编辑,另一个是空闲的 Python Shell 窗口。我发现如果您关闭 shell 窗口然后立即尝试运行脚本,它会在尝试重新打开 shell 时给出该错误 - 但如果您在两者之间稍等片刻让 Idle 进行任何连接清理,则不会它需要做。

              我发现的更糟糕的错误(同样,在 v3.0.1 中 - 不确定这是否会在 2.x 版本中发生): 我有一个很长的脚本 - 接近 9k 行 - 一旦它达到一定的大小,在它上面执行“另存为”会使空闲崩溃。我不确定大小的确切阈值是多少——但在此之前,我还会遇到一些间歇性的“另存为”崩溃,这似乎取决于我还发生了什么——其他空闲窗口​​,shell 中有多少输出也许是窗户——类似的东西。它可能会崩溃,您将丢失未保存的工作。

              另外 - 我通常做的一件事是打开一个临时窗口,我在其中剪切和粘贴不同有效性阶段的代码,给自己写注释等 - 所以不是一个有效的 python 脚本,但我有时会保存这些我可以回到他们身边。我有一个这样的文件,每次我尝试打开它时都会导致 Idle 崩溃——而且我第一次丢失了未保存的工作。 (仅供参考:包括 PythonWin 2.5.2 在内的其他编辑器打开文件没有问题。)

              【讨论】:

              • 听起来很相似——我会记住绕过它的方法,谢谢!有没有办法提交错误报告或类似文件?
              • 我有这个问题,但即使在第一次尝试启动 python 运行时干净的操作系统重新启动后也会发生。我唯一要做的就是在 IDLE 中打开文件并按 F5。我正在运行 python 3.2。
              • @JamesWanchai 和其他任何人:可以在 bugs.python.org 上打开问题,但必须注册并搜索类似的未解决问题。直接或通过 news.gmane.org 上的 gmane.comp.python.general 镜像发布到 python-list 可能会更好。或发送电子邮件至 idle-dev@python.org。
              • 如果今天打开一个 ascii 或 utf-8 编码的文本文件会导致 IDLE 关闭或崩溃,我想知道。您的暂存文件是 .py、.txt 还是 ...?
              【解决方案8】:

              您能否通过提供一个简短的代码示例更具体一些?

              IDLE 存在一些线程问题。所以调试你的问题的第一件事是在你的子进程中打印一些简单的东西。从而您将看到它是网络还是线程相关的问题。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2014-08-11
                • 1970-01-01
                • 1970-01-01
                • 2016-06-17
                • 2015-07-13
                • 2014-03-30
                相关资源
                最近更新 更多