运行Python脚本时出现中止陷阱:6
我正在做一个用Python编写的程序,这个程序会显示动画,所以我使用了pyglet这个库。到目前为止,我一直在使用Psychopy自带的Python编译器,但现在我需要让这个程序尽可能独立。
在Windows电脑上,我已经完成了这个任务。对于Mac OSX,我按照这篇文章来安装pyglet。不过,当我现在运行这个程序时,它返回了以下内容:
>>>> python 140603_plaid8.py
2014-06-17 12:25:02.512 Python[1713:d07] ApplePersistenceIgnoreState: Existing state will not be touched. New state will be written to /var/folders/fk/1plt8wj53_d183pv59scmg4m0000gn/T/org.python.python.savedState
no input received
CONFIG FILE LOADED
TRIALS FILE LOADED
2014-06-17 12:25:02.661 Python[1713:d07] -[NSApplication _setup:]: unrecognized selector sent to instance 0x102d3b5c0
2014-06-17 12:25:02.662 Python[1713:d07] An uncaught exception was raised
2014-06-17 12:25:02.663 Python[1713:d07] -[NSApplication _setup:]: unrecognized selector sent to instance 0x102d3b5c0
2014-06-17 12:25:02.663 Python[1713:d07] (
0 CoreFoundation 0x00007fff8948f25c __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00007fff87f16e75 objc_exception_throw + 43
2 CoreFoundation 0x00007fff8949212d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3 CoreFoundation 0x00007fff893ed322 ___forwarding___ + 1010
4 CoreFoundation 0x00007fff893ecea8 _CF_forwarding_prep_0 + 120
5 Tk 0x0000000108253ed6 TkpInit + 459
6 Tk 0x00000001081d1b0f Tk_Init + 1687
7 _tkinter.so 0x00000001080b4c0d Tcl_AppInit + 77
8 _tkinter.so 0x00000001080b3657 Tkinter_Create + 919
9 Python 0x00000001000c2fad PyEval_EvalFrameEx + 21405
10 Python 0x00000001000c4fb3 PyEval_EvalCodeEx + 2115
11 Python 0x000000010003eac0 function_call + 176
12 Python 0x000000010000ceb2 PyObject_Call + 98
13 Python 0x000000010001f56d instancemethod_call + 365
14 Python 0x000000010000ceb2 PyObject_Call + 98
15 Python 0x00000001000bc957 PyEval_CallObjectWithKeywords + 87
16 Python 0x000000010002285e PyInstance_New + 126
17 Python 0x000000010000ceb2 PyObject_Call + 98
18 Python 0x00000001000c0c60 PyEval_EvalFrameEx + 12368
19 Python 0x00000001000c4fb3 PyEval_EvalCodeEx + 2115
20 Python 0x000000010003eac0 function_call + 176
21 Python 0x000000010000ceb2 PyObject_Call + 98
22 Python 0x000000010001f56d instancemethod_call + 365
23 Python 0x000000010000ceb2 PyObject_Call + 98
24 Python 0x00000001000bc957 PyEval_CallObjectWithKeywords + 87
25 Python 0x000000010002285e PyInstance_New + 126
26 Python 0x000000010000ceb2 PyObject_Call + 98
27 Python 0x00000001000c0c60 PyEval_EvalFrameEx + 12368
28 Python 0x00000001000c4fb3 PyEval_EvalCodeEx + 2115
29 Python 0x00000001000c50d6 PyEval_EvalCode + 54
30 Python 0x00000001000e995e PyRun_FileExFlags + 174
31 Python 0x00000001000e9bfa PyRun_SimpleFileExFlags + 458
32 Python 0x0000000100100c0d Py_Main + 3101
33 Python 0x0000000100000f14 Python + 3860
34 ??? 0x0000000000000002 0x0 + 2
)
2014-06-17 12:25:02.664 Python[1713:d07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x102d3b5c0'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff8948f25c __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00007fff87f16e75 objc_exception_throw + 43
2 CoreFoundation 0x00007fff8949212d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3 CoreFoundation 0x00007fff893ed322 ___forwarding___ + 1010
4 CoreFoundation 0x00007fff893ecea8 _CF_forwarding_prep_0 + 120
5 Tk 0x0000000108253ed6 TkpInit + 459
6 Tk 0x00000001081d1b0f Tk_Init + 1687
7 _tkinter.so 0x00000001080b4c0d Tcl_AppInit + 77
8 _tkinter.so 0x00000001080b3657 Tkinter_Create + 919
9 Python 0x00000001000c2fad PyEval_EvalFrameEx + 21405
10 Python 0x00000001000c4fb3 PyEval_EvalCodeEx + 2115
11 Python 0x000000010003eac0 function_call + 176
12 Python 0x000000010000ceb2 PyObject_Call + 98
13 Python 0x000000010001f56d instancemethod_call + 365
14 Python 0x000000010000ceb2 PyObject_Call + 98
15 Python 0x00000001000bc957 PyEval_CallObjectWithKeywords + 87
16 Python 0x000000010002285e PyInstance_New + 126
17 Python 0x000000010000ceb2 PyObject_Call + 98
18 Python 0x00000001000c0c60 PyEval_EvalFrameEx + 12368
19 Python 0x00000001000c4fb3 PyEval_EvalCodeEx + 2115
20 Python 0x000000010003eac0 function_call + 176
21 Python 0x000000010000ceb2 PyObject_Call + 98
22 Python 0x000000010001f56d instancemethod_call + 365
23 Python 0x000000010000ceb2 PyObject_Call + 98
24 Python 0x00000001000bc957 PyEval_CallObjectWithKeywords + 87
25 Python 0x000000010002285e PyInstance_New + 126
26 Python 0x000000010000ceb2 PyObject_Call + 98
27 Python 0x00000001000c0c60 PyEval_EvalFrameEx + 12368
28 Python 0x00000001000c4fb3 PyEval_EvalCodeEx + 2115
29 Python 0x00000001000c50d6 PyEval_EvalCode + 54
30 Python 0x00000001000e995e PyRun_FileExFlags + 174
31 Python 0x00000001000e9bfa PyRun_SimpleFileExFlags + 458
32 Python 0x0000000100100c0d Py_Main + 3101
33 Python 0x0000000100000f14 Python + 3860
34 ??? 0x0000000000000002 0x0 + 2
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6
我不太明白这个错误是什么意思,有人能帮我理解我哪里做错了吗?
5 个回答
我在MacOS 10.15.5上导入asn1crypto
时遇到了同样的错误。通过使用brew先卸载再重新安装openssl,问题解决了:
brew uninstall --ignore-dependencies openssl
在这个过程中,brew提醒我有一些文件没有被删除(比如/usr/local/etc/openssl@1.1/cert.pem
),我把这些文件移到了备份位置:
sudo mv /usr/local/etc/openssl@1.1 ~/openssl@1.1-usrlocalbackup
然后再次用brew重新安装openssl后,问题就解决了:
brew install openssl
这个错误信息在这种情况下并没有给我们太多帮助。你需要做的(一般调试时)是找出哪些地方成功了,哪些地方失败了,这样才能缩小问题的范围。
可以先从一个简单的脚本开始,只导入pyglet。如果这个能成功运行,那就继续导入pyglet并打开一个窗口等等……
等你知道是哪个代码行导致了错误,再来反馈一下。
Jon
我找到了这个错误出现的原因。是因为我使用了TKinter这个库,如果我把用到TKinter的那几行代码注释掉,这个错误就不会出现,程序也能继续运行。
等我找到在OSX上正确使用TKinter的方法后,我会更新这个回答。不过我现在最关心的是pyglet动画,它在OSX上不工作,但在Windows上可以正常运行。
我在使用OpenCV的时候遇到了类似的错误。经过一番搜索,我发现这个错误可能和新的macOS系统有关。这个系统不允许调用没有版本号的动态链接库(dylibs)。我在这里找到了解决办法:
https://forums.developer.apple.com/thread/119429
在你的终端里:
brew update && brew upgrade && brew install openssl
cd /usr/local/Cellar/openssl/1.0.2t/lib
sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/local/lib/
cd /usr/local/lib
sudo ln -s libssl.1.0.0.dylib libssl.dylib
sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib
pip3 install --upgrade packagename
像这样运行你的Python脚本:
$ PYTHONVERBOSE=3 python your_script.py
查看在 Abort trap: 6
之前的最后一条语句,比如:
import asn1crypto._perf._big_num_ctypes # precompiled from ...
Abort trap: 6
然后,在独立的Python解释器中运行它:
$ python
Python 2.7.17 (default, May 6 2020, 10:47:56)
[GCC 4.2.1 Compatible Apple LLVM 11.0.3 (clang-1103.0.32.59)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import asn1crypto._perf._big_num_ctypes
Abort trap: 6
这样你就知道问题出在 asn1crypto
模块上。在这个情况下,深入查看那个文件,找出更多信息...
但对于这个特定的情况,只需删除 asn1crypto
包的目录,然后再试一次。(pip uninstall asn1crypto
可能不起作用。)