【问题标题】:Cannot import modules in Python3 from sub directory无法从子目录导入 Python3 中的模块
【发布时间】:2016-04-14 18:27:39
【问题描述】:

我当前的工作文件的文件结构如下:

--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解释器在从根文件夹(Trick_Folder)导入encoder.py时可以调用sampler.py

【问题讨论】:

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


    【解决方案1】:

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

    from . import sampler
    

    在你的encoder.py

    【讨论】:

    • 我试过了,但它给了我invalid syntax 我正在从Python3 shell 运行import
    【解决方案2】:

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

    在我的 encoder.py 之前,import sampler 之前的行,正如 this Query 所建议的那样,我按照 @ahmed 的建议重写了该行,但此后进行了一些更改

    import .sampler
    

    给出invalid syntax 错误

    解决方案

    from . import sampler
    

    现在from LTransform import encoder 完美运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-25
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 2015-07-23
      相关资源
      最近更新 更多