python - 导入错误:没有名为 'mirror' 的模块

标签 python python-3.3 importerror

我使用的是Python3.3,并且安装了一个名为python-bidi的包,可以在 here 找到它。

我已通过运行:python setup.py install 安装了该软件包,这是软件包文档中的说明。

现在我正在运行使用该包的代码,但出现此错误:

File "C:\Python33\lib\site-packages\python_bidi-0.3.4-py3.3.egg\bidi\algorithm.py", line 24, in <module>
from mirror import MIRRORED
ImportError: No module named 'mirror'

但是,查看此文件夹:C:\Python33\lib\site-packages\python_bidi-0.3.4-py3.3.egg\bidi 我可以看到有一个名为mirror.py。 我收到错误的原因是什么? 感谢您对此提供的任何帮助。

最佳答案

在Python 2.7中,您可以执行import bidi.algorithm,但在Python 3.3中会失败。实际上,它来自于模块导入方式的改变。请注意,python-bidi 库的最后一次更新是在 2010 年。

参见PEP 328 ,它也可以追溯到 2010 年。此 PEP 解决了以下问题:“导入在包面前可能不明确;在包内,不清楚 import foo 是指包内的模块还是包外的某个模块包。(更准确地说,本地模块或包可以隐藏另一个直接卡在 sys.path 上的模块或包。)”

使用 Python 3.x 中使用的新符号,您可以在“bidi/algorithm.py”中编写 from .mirror import MIRRORED 而不是 frommirror import镜像。注意这个点!

导入可以工作,但由于其他不兼容性,模块 bidi.algorithm 仍然无法加载。也就是说,在某个点 X2_X5_MAPPINGS.keys() + ['BN', 'PDF', 'B'] 会失败,因为 dict.keys() 确实不再返回列表,而是返回“dict_keys”对象。

因此,您将无法在 Python 3.x 中使用此包,除非您愿意做一些工作来解决不兼容性。

顺便说一句,Python 2.7 也可以理解新的符号 from .mirror import MIRRORED,因此应该可以使 python-bidi 与 Python 2.x 和 Python 2.x 兼容。 3.x 行。

关于python - 导入错误:没有名为 'mirror' 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20853419/

相关文章:

python - 有没有专门的方法来获取 python `Enum` 中的项目数?

python - 如何循环通过生成器

python - python 终端中 perl 的导入错误

regex - Python 3.3 中查找字符串是否以\U 开头

python-2.7 - Matplotlib导入错误ft2font

python - 无法在Mac OSX上的python3.6中导入OpenCV,这是依赖性问题吗?

python - 以前一行为条件的列操作

python - struct.unpack 导致TypeError :'int' 不支持buffer接口(interface)

python - 使用 functools.lru_cache 时最大递归深度更快达到

python - 如何打印具有用户定义属性的类的实例?