【问题标题】:ImportError on python 3, worked fine on python 2.7python 3 上的 ImportError,在 python 2.7 上运行良好
【发布时间】:2016-11-28 14:19:16
【问题描述】:

使用 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文件,没有专门的compiled/cython/.pyd的东西。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 2017-11-04
      • 1970-01-01
      相关资源
      最近更新 更多