Python 3上的ImportError,在python 2.7上运行良好
问题内容:
code_parsing
使用Python 3.2导入我的软件包时出现错误。
目录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 – 导入:多行和绝对/相对
。