我正在使用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。
答案 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
参考: