为什么 Python 在使用绝对路径执行时不会退出引发的异常?

2023-11-21

已解决:重新启动机器似乎已解决该问题。如果问题再次出现,我会更新。

我遇到一个问题Python2.6引发异常后挂起,特别是当foo.py使用绝对路径调用(/home/user/bar/foo.py)。然后我需要ctrl+c退出程序。如果从内部调用bar目录为./foo.py或从根目录作为./home/user/bar/foo.py,程序正确终止。

foo.py:

#!/usr/bin/env python2.6
print 'begin'
x = [0, 1, undefined]
print 'x'

or

#!/usr/bin/env python2.6
print 'begin'
raise Exception('stopping here')

我还可以提到sys.exit()工作正常,没有问题。

#!/usr/bin/env python2.6
import sys
print 'begin'
sys.exit(0)

无法终止程序的异常发生了什么?这可能特定于我的配置。我应该从哪里开始寻找解决方案?

EDIT: execfile('/home/user/bar/foo.py')如果运行交互模式则工作正常。此外,运行nohup /home/user/bar/foo.py &导致必须终止的挂起进程。

运行 CentOS 版本 6.3(最终版)。这个问题并不总是存在。这只是大约一个月前的一个周末开始的(当时我没有使用这台机器)。

更新:使用 GDB 调试,回溯指向libpthread.so.0.

#0  0x000000364340e890 in __connect_nocancel () from /lib64/libpthread.so.0
#1  0x00007ffff18960d8 in ?? () from /usr/lib64/python2.6/lib-dynload/_socketmodule.so
#2  0x00007ffff189815c in ?? () from /usr/lib64/python2.6/lib-dynload/_socketmodule.so
#3  0x00007ffff7d0a706 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#4  0x00007ffff7d0c797 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.6.so.1.0
#5  0x00007ffff7d0abe4 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#6  0x00007ffff7d0bccf in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#7  0x00007ffff7d0bccf in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#8  0x00007ffff7d0c797 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.6.so.1.0
#9  0x00007ffff7c9adb0 in ?? () from /usr/lib64/libpython2.6.so.1.0
#10 0x00007ffff7c70303 in PyObject_Call () from /usr/lib64/libpython2.6.so.1.0
#11 0x00007ffff7d04dd3 in PyEval_CallObjectWithKeywords () from /usr/lib64/libpython2.6.so.1.0
#12 0x00007ffff7d28cd2 in PyErr_PrintEx () from /usr/lib64/libpython2.6.so.1.0
#13 0x00007ffff7d29297 in PyRun_SimpleFileExFlags () from /usr/lib64/libpython2.6.so.1.0
#14 0x00007ffff7d35c32 in Py_Main () from /usr/lib64/libpython2.6.so.1.0
#15 0x000000364281ecdd in __libc_start_main () from /lib64/libc.so.6
#16 0x0000000000400649 in _start ()

有人知道这是什么意思吗?


这个问题在 RHEL 6 机器上已经困扰我一段时间了。在某些情况下,异常会导致挂起。事实上,我能够逐字记录你的代码并重现症状。

感谢 abrtd 的回答,我确定安装了 abrt-addon-python 包,它将 abrt_exception_handler.py 放入 site-packages 位置,并在 python 启动期间调用。该文件覆盖 sys.excepthook 函数,该函数使用套接字联系 abrt 守护程序。看ABRT 项目文档了解更多信息。

我验证了将 -S 添加到 python 调用可以防止挂起。但是,这不是一个好的解决方案,因为 -S 选项会阻止在启动时导入所有站点包。

更好的解决方案是在 python 代码中添加以下内容:

import sys
sys.excepthook = sys.__excepthook__

它恢复原始异常挂钩并防止挂起。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Python 在使用绝对路径执行时不会退出引发的异常? 的相关文章

  • 从 torch.autograd.gradcheck 导入 zero_gradients

    我想复制代码here https github com LTS4 DeepFool blob master Python deepfool py 并且我在 Google Colab 中运行时收到以下错误 ImportError 无法导入名称
  • 如何同时运行多个功能[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有以下代码 my func1 my func2 my func3 my func4 my func5 是否可以同时计算函数的数据 而
  • 如何在 Pandas Python 中按 id 对行进行排名

    我有一个像这样的数据框 id points1 points2 1 44 53 1 76 34 1 63 66 2 23 34 2 44 56 我想要这样的输出 id points1 points2 points1 rank points2
  • 如何通过 python 中的函数运行列表?

    我试图通过我创建的函数运行我的列表 但不断收到错误 我不知道出了什么问题 温度 F temp f 19 21 21 21 23 功能 def fahrToCelsius tempFahrenheit return tempFahrenhei
  • pyCUDA无法打印结果

    最近 我使用 pip 为我的 python3 4 3 安装 pyCUDA 但我在测试示例代码时发现 https documen tician de pycuda tutorial html getting started https doc
  • 使用 Python 和 lmfit 拟合复杂模型?

    我想适合椭偏仪 http en wikipedia org wiki Ellipsometry使用 LMFit 将数据转换为复杂模型 两个测量参数 psi and delta 是复杂函数中的变量rho 我可以尝试将问题分离为实部和虚部共享参
  • Scrapy 文件管道不下载文件

    我的任务是构建一个可以下载所有内容的网络爬虫 pdfs 在给定站点中 Spider 在本地计算机和抓取集线器上运行 由于某种原因 当我运行它时 它只下载一些但不是全部的 pdf 通过查看输出中的项目可以看出这一点JSON 我已经设定MEDI
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • 如何找到多个 pandas 数据框中一对列与任意顺序对的交集?

    我有多个 pandas 数据框 为了简单起见 假设我有三个 gt gt df1 col1 col2 id1 A B id2 C D id3 B A id4 E F gt gt df2 col1 col2 id1 B A id2 D C id
  • 获取 Keras model.summary() 作为表

    我在 Keras 中创建了相当大的模型 我正在用 LaTeX 写一篇关于它的文章 为了很好地描述 LaTeX 中的 keras 模型 我想用它创建一个 LaTeX 表 我可以手动实现它 但我想知道是否有任何 更好 的方法来实现这一点 我四处
  • Python 在哪些系统上不使用 IEEE-754 双精度浮点数

    Python 对 IEEE 754 浮点运算进行了各种引用 但不保证1 https docs python org 3 tutorial floatingpoint html 2 https pythondev readthedocs io
  • 哪种方式最适合Python工厂注册?

    这是一个关于这些方法中哪一种被认为是最有效的问题 Pythonic 我不是在寻找个人意见 而是在寻找惯用的观点 我的背景不是Python 所以这会对我有帮助 我正在开发一个可扩展的 Python 3 项目 这个想法类似于工厂模式 只不过它是
  • 获取多个同名请求参数

    我的问题是给定的代码 from flask import Flask request app Flask name app route def hello return str request values get param None a
  • Python脚本从字母和两个字母组合生成单词

    我正在编写一个简短的脚本 它允许我使用我设置的参数生成所有可能的字母组合 例如 b a 参数 单词 5 个字母 第三 第五个字母 b a 第一个字母 ph sd nn mm 或 gh 第二 第四个字母 任意元音 aeiouy 和 rc 换句
  • 在Python中使用pil读取tif图像时出现值错误?

    我必须读取尺寸的tif图像2200 2200并输入 uint16 我将 PIL 库与 anaconda python 一起使用 如下所示 from PIL import Image img Image open test tif img i
  • 如何创建增量加载网页

    我正在编写一个处理大量数据的页面 它会永远持续到我的结果页面加载 几乎无限 因为返回的数据太大了 因此 我需要实现一个增量加载页面 例如 url 中的页面 http docs python org http docs python org
  • 根据标点符号列表替换数据框中的标点符号[重复]

    这个问题在这里已经有答案了 使用 Canopy 和 Pandas 我有数据框 a 其定义如下 a pd read csv text txt df pd DataFrame a df columns test test txt 是一个单列文件
  • 如何检测一个二维数组是否在另一个二维数组内?

    因此 在堆栈溢出成员的帮助下 我得到了以下代码 data needle s which is a png image base64 code goes here decoded data decode base64 f cStringIO
  • 检查 IP 地址是否在给定范围内

    我想检查一下是否有IP180 179 77 11位于特定范围之间 例如180 179 0 0 180 179 255 255 我编写了一个函数 它将每个 IP 八位字节与其他八位字节进行比较 def match mask IP min ip
  • Tkinter 将鼠标点击绑定到框架

    我一定错过了一些明显的东西 我的 Tkinter 程序中有两个框架 每个框架在网格布局中都有一堆标签 我想将鼠标点击绑定到其中一个而不是另一个 我目前使用 root bind

随机推荐

  • auto 关键字在 Dev C++ 中不起作用[重复]

    这个问题在这里已经有答案了 这是我写的代码 看看如何auto关键字有效 但它没有在 Dev C 中编译并给出以下警告 警告 C 11 auto 仅适用于 std c 11 或 std gnu 11如何克服这个故障并按照警告的指示去做 inc
  • Xamarin Forms:TabbedPage 中的内容页

    我正在尝试将一些自定义内容页面放入选项卡式页面中 遗憾的是我不确定如何使用 XAML 语法执行此操作 我的虚拟项目如下所示 Page 1
  • 将 AsyncRead 转换为 TryStream 字节的最佳方法是什么?

    我有一个AsyncRead并想将其转换为Stream
  • 同一个表中与 SQLAlchemy 的多对一关系

    我有一张 客户 表 其中客户可以是另一个客户的子项 这是表定义 ClientID int IDENTITY 1 1 NOT NULL name varchar 50 NOT NULL VPFSID varchar 50 NOT NULL T
  • 在 WebView 中从相机或图库上传图像

    此应用程序中的 WebView 打开一个带有上传按钮的页面 下面的代码块允许打开一个对话框以从图库或相机上传图像 在我的活动中 我有 private WebView wv make HTML upload button work in We
  • 一个干净的 CSS3 3 列布局,从哪里开始?

    我目前正在更新一个相当旧的网站 上次更新是在 2001 年左右 并同意使用 HTML5 和 CSS3 对于总体设计 我正在研究一种非常干净的白色和灰色色调风格 带有许多填充和边距 我的问题出在主页上 我想要一个 3 列居中布局 但从哪里开始
  • Python ctypes 加载错误:未定义的符号

    我试图使用 ctypes 将从 C 源代码编译的共享库加载到 Python 中 共享库 名为 库子库 下面 使用libusb图书馆 这就是 make 所做的 gcc c O2 Wall Werror g I src I boot vnd f
  • 从 CSV 文件中提取数据(融合表和 kml 解决方法)

    在使用 C 的 Android 版 Xamarin 谷歌地图中 您可以基于此创建多边形tutorial public void OnMapReady GoogleMap googleMap mMap googleMap PolylineOp
  • TransactionScope 无法与并行扩展一起使用?

    如果我执行以下操作 Using scope New TransactionScope entries Content ReadAs Of IList Of WebMaint AsParallel ForAll Sub entry repos
  • jquery推送制作多维数组

    我在没有帮助的情况下查看了其他类似的帖子 它们都是从已经制作的多维数组开始的 我想通过使用 push 神奇地制作一个 我的阵列 ItemsArray push RoomName RoomName Item this is where I w
  • 当数组长度不为空时出现“恐慌:运行时错误:索引超出范围”

    我很难学习如何在 Go 中循环字符串来做一些事情 具体来说 分隔单词而不是包含元音 我写了这个代码片段 https play golang org p zgDtOyq6qf 这是我运行时遇到的错误 panic runtime error i
  • 提高 LIKE 子句的性能

    这几天来 这一直是我头疼的事情 我之前创建数据库时对性能一无所知LIKE 我使用的查询是这样的 SELECT FROM JOINS WHERE tableA col1 LIKE keyword OR tableB col2 LIKE key
  • 隐藏拖动预览 - HTML 拖放

    我的一个网站具有拖放功能 一旦您开始拖动我的可拖动 div 之一 就会出现所拖动元素的透明预览 这实际上妨碍了我的用户准确放置元素的方式 因为他们拖动的内容并不直接反映删除的内容 有没有办法删除或更好地将拖动预览更改为不同的图像 我相信您可
  • 如何避免Python中的L

    gt gt gt sum range 49999951 50000000 2449998775L 有什么办法可以避免数字末尾的 L 吗 您正在查看数字的 Python 文字表示形式 它仅表明它是一个 Pythonlong整数 这个是正常的
  • 使用回收器视图的类似 Google Play 商店的界面

    我的任务是创建一个与 Google Play 商店非常相似的界面 会有一个类别名称 后面跟着 3 或 4 张卡片 水平 然后是 更多 按钮 然后再下一个类别 我已经使用将水平列表视图嵌套在垂直列表视图中来实现这一点 我知道 我可以通过使用具
  • 自动将多个对象映射到一个对象

    我有两个子类 我需要将列表元素复制到主对象中 public Class Foo1 Anote public bool Ison get set public List
  • 在javascript中对json对象进行排序

    例如有这样的代码 var json user1 id 3 user2 id 6 user3 id 1 我怎样才能将这个 json 排序为这样 var json user3 id 1 user1 id 3 user2 id 6 我用 ID 对
  • RabbitMQ虚拟主机启动服务时出错

    我的 RabbitMQ 服务器已经运行了几个月 今天早上我无法连接到它 我的应用程序超时并且管理客户端没有响应 重新启动机器 应用程序仍然超时 我可以登录管理客户端 但看到以下消息 虚拟主机 在节点rabbit MQT01上遇到错误 可能无
  • apache poi:将jtable保存到文件中

    我最近开始使用 java 当我需要从 jTable 开始创建 excel 文件时 我遇到了 apache poi 库的一些问题 我已经阅读了很多线程并提出了一些行不通的代码 即使这是非常简单的东西并且有很多例子 这让我看起来更愚蠢 我希望有
  • 为什么 Python 在使用绝对路径执行时不会退出引发的异常?

    已解决 重新启动机器似乎已解决该问题 如果问题再次出现 我会更新 我遇到一个问题Python2 6引发异常后挂起 特别是当foo py使用绝对路径调用 home user bar foo py 然后我需要ctrl c退出程序 如果从内部调用