【发布时间】:2016-03-29 16:55:57
【问题描述】:
在相对干净的 Ubuntu 15.04 桌面系统上使用 Anaconda 2.5.0 (python 2.7),我有以下异常行为:
如果我用 cx_Freeze 4.3.4 打包我的应用程序并将 bin 目录添加到 PYTHONPATH 环境变量中:
export PYTHONPATH=~/frozen-app/bin
然后,当我输入错误的 bash 命令时:
sl
而不是预期的:
The program 'sl' is currently not installed. You can install it by typing:
sudo apt-get install sl
我得到一个 python 堆栈跟踪:
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 23, in <module>
import gettext
File "/usr/lib/python3.4/gettext.py", line 49, in <module>
import locale, copy, io, os, re, struct, sys
File "/usr/lib/python3.4/locale.py", line 18, in <module>
import collections
File "/usr/lib/python3.4/collections/__init__.py", line 11, in <module>
from operator import itemgetter as _itemgetter, eq as _eq
ImportError: dynamic module does not define init function (PyInit_operator)
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 62, in apport_excepthook
import re, traceback
File "/usr/lib/python3.4/traceback.py", line 3, in <module>
import linecache
File "/usr/lib/python3.4/linecache.py", line 10, in <module>
import tokenize
File "/usr/lib/python3.4/tokenize.py", line 29, in <module>
import collections
File "/usr/lib/python3.4/collections/__init__.py", line 11, in <module>
from operator import itemgetter as _itemgetter, eq as _eq
ImportError: dynamic module does not define init function (PyInit_operator)
Original exception was:
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 23, in <module>
import gettext
File "/usr/lib/python3.4/gettext.py", line 49, in <module>
import locale, copy, io, os, re, struct, sys
File "/usr/lib/python3.4/locale.py", line 18, in <module>
import collections
File "/usr/lib/python3.4/collections/__init__.py", line 11, in <module>
from operator import itemgetter as _itemgetter, eq as _eq
ImportError: dynamic module does not define init function (PyInit_operator)
似乎“command-not-found”命令被我的 PYTHONPATH 环境弄糊涂了,但我不知道具体原因。我认为我的应用程序中没有定义任何提到的模块(例如,我没有在我的应用程序中定义“re”模块)。
如果我运行“strace sl”,那么我只会得到“can't stat sl”。有没有其他方法可以准确地确定我的应用程序中的哪个文件导致了这种情况?
【问题讨论】:
标签: python-2.7 python-3.x anaconda