从子目录导入模块在Python2中起作用,但在Python3中不起作用
所以我有一个目录,它的结构如下:从子目录导入模块在Python2中起作用,但在Python3中不起作用,python,python-3.x,Python,Python 3.x,所以我有一个目录,它的结构如下: > current_directory > submodule /__init__.py /some_module.py /main.py 在\uuuu init\uuuuu.py文件中,存在以下语句: from some_module import some_funciton 而在main.py中,整个子模块是通过:import子模块导入的 现在,Python2执行得非常好,但问题是在Python
> current_directory
> submodule
/__init__.py
/some_module.py
/main.py
在\uuuu init\uuuuu.py
文件中,存在以下语句:
from some_module import some_funciton
而在main.py
中,整个子模块
是通过:import子模块
导入的
现在,Python2执行得非常好,但问题是在Python3中,\uu init\uuuuuupy.py
中的import
语句引发了一个ImportError
异常:“没有名为'some\u module'的模块”
在指定导入文件的层次结构时,Python 2和Python 3之间有什么区别?我将如何调整代码以使用Python 3?在Python 3中,仅以
的形式支持相对导入。导入子模块
您应该重写import
语句,或者通过将项目目录添加到python路径使导入成为绝对的:
export PYTHONPATH=current_directory
python main.py
这应该行得通。唯一的问题是来自x import y的
语句。你确定你没有使用来自
的吗?是的,我是。我把问题简化得太多了,无法提出问题。我会很快编辑它。谢谢,这会让它更清晰!有人链接了包含此链接的其他问题的答案:。这也很有帮助。