python - python 3 上的 ImportError,在 python 2.7 上运行良好

标签 python python-3.x python-2.7 import module

在使用 Python 3.2 导入我的 code_parsing 包时出现错误。

目录 code_parsing 位于 PYTHONPATH 中,包含以下文件(还有一些其他文件,但与此处无关)

code_parsing/__init__.py
code_parsing/ada.py

__init__.py 包含:

from ada import *

导入我的模块时出现此错误:

>>> import code_parsing
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "K:\CODE\pythonlib\code_parsing\__init__.py", line 1, in <module>
    from ada import *
ImportError: No module named ada

在具有相同环境的同一台机器上使用 python 2.7,它工作正常。

一些精度:

  • 使用相同的 directory/__init__.py 结构在同一目录中导入的其他文件工作正常。
  • ada.py 是一个纯 python 文件,没有特殊的编译/cython/.pyd 东西。

有什么想法吗?

最佳答案

Python 3 使用绝对导入。任何非限定名称都将作为顶级模块导入。

您没有顶级 ada 模块。你有一个 code_parsing.ada 模块,所以以下将起作用:

from code_parsing.ada import *

或使用明确的“本地包”引用:

from .ada import *

您可以在 Python 2 中强制执行相同的行为:

from __future__ import absolute_import

参见 PEP 328 – Imports: Multi-Line and Absolute/Relative了解详情。

关于python - python 3 上的 ImportError,在 python 2.7 上运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38564382/

相关文章:

python - 这个毕达哥拉斯三重函数的复杂度是多少?

python - 如何删除混合列表中的字符串并将其放回原处?

python - 如何通过代码将用户明智的销售订单与网站菜单链接起来

python - 我应该如何理解 dis.dis 的输出?

python-2.7 - 如何在 Ubuntu 12.04 中删除 Python 版本?

python - 需要基本的 Python 编程帮助 : Arrays and random locations

java - 你下一步怎么做?

python - Python 中最长的递增子序列(For vs While 循环)

python - Python : is it ok to threads read/write simultaneously to same TCP socket?

python - 在 Python 3 中使用在 exec'ed 字符串中定义的函数