导入模块工作在Python 2,但不是Python的3

问题描述:

所以我有目录与结构如下:导入模块工作在Python 2,但不是Python的3

> current_directory 
    > submodule 
     /__init__.py 
     /some_module.py 
    /main.py 

__init__.py文件下面的语句是存在:

from some_module import some_funciton 

main.py整个submodule导入:import submodule。现在

,这个执行与Python 2完全没有问题,但问题是,在Python 3 __init__.pyimport陈述引发ImportError例外:`无模块名为“some_module”。

当涉及到指定导入文件的层次结构时,Python 2和Python 3之间有什么区别,以及如何调整代码以使用Python 3?

+0

,应该工作。唯一的问题将是'from x import y'语句。你确定你没有使用'from'? –

+0

是的,我是。我简化了这个问题,以便提出这个问题。我会尽快编辑它。 –

在python 3中,仅支持from . import submodule的相对导入。

您应该重写你的import陈述或者使进口绝对通过增加项目目录到Python路径:

export PYTHONPATH=current_directory 
python main.py 
+0

谢谢,这清除它!有人将答案链接到包含此链接的不同问题:https://www.python.org/dev/peps/pep-0328/。这也是非常有用的。 –