无法从子目录导入Python3中的模块

时间:2016-04-14 18:27:39

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

我当前的工作文件采用以下文件结构:

--Trick_Folder (root folder)
   --try.py
  --LTransform (sub-folder)
     --encoder.py
     --decoder.py
     --sampler.py
     --__init__.py

在我的try.py中,我尝试从子文件夹LTransform中编写导入其中一个模块,如下所示:

**Python-3.4.3
from LTransform import encoder

注意:在encoder.py中有一条import sampler

这是我得到的错误:

import sampler
ImportError: No module named 'sampler'

我试过了解它,但我无法绕过它。 __init__.py已经在子文件夹中,我的PYTHONPATH在根文件夹Trick_Folder上设置为/home/user/Trick_Folder

为什么Python3解释器在从根文件夹(sampler.py)导入encoder.py时可以调用Trick_Folder

2 个答案:

答案 0 :(得分:1)

要告诉python从当前目录导入,请使用:

from . import sampler

encoder.py

答案 1 :(得分:1)

找到导入模块的正确方法。

encoder.py之前的import sampler行,正如this Query所建议的那样,我按照@ahmed的建议改写了这行,但是自

以来有了一些更改
import .sampler

发出invalid syntax错误

解决方案

from . import sampler

现在from LTransform import encoder完美无缺。