Python3中的模块导入

时间:2015-12-14 16:19:00

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

我正在使用Python 3.4

我的目录结构如下:

A
   B
      c.py
      d.py
      __init__.py
   C
      e.py
      f.py
      __init__.py
   g.py
   __init__.py

从g.py我可以从B和C模块导入东西。

我需要在 e.py 中从 c.py

导入内容

我试过了:

import B

from B.c import stuff_I_need

对于我都得到错误:

"No module named B".

我也尝试过这样的事情:

from A.B.c import stuff_I_need

我对使用相同目录结构的事实感到困惑,我可以使用Python 2.7进行我需要的导入。

你能帮我弄清楚发生了什么吗?

解决方案:

PACKAGE_PARENT = '..'
SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__))))
sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))

取自here

2 个答案:

答案 0 :(得分:0)

导入时,会查看导入的python文件夹和本地目录中的文件。如果您要导入两者都不存在的文件,那么我建议使用sys模块

import sys
sys.path.append(r'file-path\A') # Folder A
import B.c

如果您不想设置完整的文件路径,那么您也可以使用它回溯到上一个目录以获得相同的效果。

sys.path.append('..') # Previous Directory

答案 1 :(得分:0)

你需要做任何一次

from .B import c

import A.B.c

参考: