Python子文件夹模块无法导入其他子文件夹模块

时间:2018-11-26 00:23:28

标签: python-3.x import

我一直在努力寻找如何使用各种类型的模块有效地组织代码的方法。我有一个三层文件夹系统。父目录包含main.py文件,该文件导入并运行主要代码。这些模块位于称为lib的子文件夹中,而其他模块则位于其他子文件夹中。但是,当我从子文件夹导入一个模块时,该模块本身无法在同一子目录中导入模块。抱歉,如果这是一个不好的问题,但是我无法弄清楚为什么导入语句不起作用,而且我已经查看了google和堆栈溢出,但未发现任何类似的问题。欢迎提供所有建议。

SELECT Account
      ,ProfitCode
      ,FormatCode
      ,Acctname
      ,(
          SELECT sum(Debit) AS OBDebit
          FROM JDT1 AS t
          WHERE RefDate < {?From}
              AND JDT1.Account = t.Account
              AND JDT1.ProfitCode = t.ProfitCode
          )
      ,(
          SELECT sum(Credit) AS OBCredit
          FROM JDT1 AS t
          WHERE RefDate < {?From}
              AND JDT1.Account = t.Account
              AND JDT1.ProfitCode = t.ProfitCode
          )
      ,(
          SELECT sum(Debit) AS OBDebit
          FROM JDT1 AS t
          WHERE RefDate >= {?From}
              AND Refdate <= {?To}
              AND JDT1.Account = t.Account
              AND JDT1.ProfitCode = t.ProfitCode
          )
      ,(
          SELECT sum(Credit) AS OBCredit
          FROM JDT1 AS t
          WHERE RefDate >= {?From}
              AND Refdate <= {?To}
              AND JDT1.Account = t.Account
              AND JDT1.ProfitCode = t.ProfitCode
          )
    FROM JDT1
     JOIN [OACT] ON [JDT1].[Account] = [OACT].[AcctCode]
     JOIN [OPRC] ON [JDT1].[ProfitCode] = [OPRC].[PrcCode]
    GROUP BY Account, ProfitCode, FormatCode ,Acctname

我主要跑

Parent Directory
---->lib
      |--->module_group
            |module_one.py(that tries but fails to import module_one)
            |module_two.py
 |main.py

这将一直工作到处理错误为止,即说没有像第二模块这样的模块。但是,当我自己运行module_one时,它可以与以下import语句一起正常工作。

from lib.module_group.module_one import Module_One

1 个答案:

答案 0 :(得分:1)

PYTHONPATH设置为您要用作根目录的目录。例如,如果要使用以下代码:

from lib.module_group.module_one import Module_One

然后将PYTHONPATH设置为包含lib的目录。例如:

lib/module_group/module_one.py

from lib.module_group.module_two import Module_Two

lib/module_group/module_two.py

class Module_Two:
    print('Loaded Module_Two')

然后,要直接运行module_one.py并仍使其能够使用lib.module_group.module_two来加载Module_Two,请使用类似以下内容的

$ PYTHONPATH="${PWD}:${PYTHONPATH}" python3 lib/module_group/module_one.py
Loaded Module_Two