我目前正在开发一个 Python/Twisted 项目,该项目将在 Planetlab 上进行分发和测试。出于某种原因,我的代码在星期五工作,现在我想测试一个小的更改,它根本拒绝工作:
Traceback (most recent call last):
File "acn_a4/src/node.py", line 6, in <module>
from twisted.internet.protocol import DatagramProtocol
File "/usr/lib/python2.5/site-packages/Twisted-10.0.0-py2.5-linux-i686.egg/twisted/__init__.py", line 18, in <module>
from twisted.python import compat
File "/usr/lib/python2.5/site-packages/Twisted-10.0.0-py2.5-linux-i686.egg/twisted/python/compat.py", line 146, in <module>
import operator
File "/home/cdecker/dev/acn/acn_a4/src/operator.py", line 7, in <module>
File "/home/cdecker/acn_a4/src/node.py", line 6, in <module>
from twisted.internet.protocol import DatagramProtocol
File "/usr/lib/python2.5/site-packages/Twisted-10.0.0-py2.5-linux-i686.egg/twisted/internet/protocol.py", line 20, in <module>
from twisted.python import log, failure, components
File "/usr/lib/python2.5/site-packages/Twisted-10.0.0-py2.5-linux-i686.egg/twisted/python/log.py", line 19, in <module>
from twisted.python import util, context, reflect
File "/usr/lib/python2.5/site-packages/Twisted-10.0.0-py2.5-linux-i686.egg/twisted/python/util.py", line 5, in <module>
import os, sys, hmac, errno, new, inspect, warnings
File "/usr/lib/python2.5/inspect.py", line 32, in <module>
from operator import attrgetter
ImportError: cannot import name attrgetter
由于我对 python 还很陌生,我不知道是什么导致了这个问题。
欢迎所有建议:-)
最佳答案
您自己的文件之一 /home/cdecker/dev/acn/acn_a4/src/operator.py
隐藏了 Python 的内置 operator
模块。您应该将自己的 operator.py
重命名为其他名称。
你可以在这里看到问题:
File "/usr/lib/python2.5/site-packages/Twisted-10.0.0-py2.5-linux-i686.egg/twisted/python/compat.py", line 146, in <module>
import operator
File "/home/cdecker/dev/acn/acn_a4/src/operator.py", line 7, in <module>
Twisted 尝试使用
import operator
但 Python 加载了您自己的模块之一。为了防止将来发生类似的事情,您可能不应该像那样将 src 文件夹添加到 PYTHONPATH 中。而是创建一个包,以便您自己的文件显示为
myproject.mymodule
并且不能隐藏内置文件。关于python - Twisted 是否改变了它的依赖关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2753552/