导入模块工作在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__.py
的import
陈述引发ImportError
例外:`无模块名为“some_module”。
当涉及到指定导入文件的层次结构时,Python 2和Python 3之间有什么区别,以及如何调整代码以使用Python 3?
答
在python 3中,仅支持from . import submodule
的相对导入。
您应该重写你的import
陈述或者使进口绝对通过增加项目目录到Python路径:
export PYTHONPATH=current_directory
python main.py
+0
谢谢,这清除它!有人将答案链接到包含此链接的不同问题:https://www.python.org/dev/peps/pep-0328/。这也是非常有用的。 –
,应该工作。唯一的问题将是'from x import y'语句。你确定你没有使用'from'? –
是的,我是。我简化了这个问题,以便提出这个问题。我会尽快编辑它。 –