【发布时间】:2012-05-03 14:41:31
【问题描述】:
假设我有以下目录结构:
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
如果我想从foo.py 中导入bar.py,我该怎么做?
【问题讨论】:
标签: python import path pythonpath
假设我有以下目录结构:
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
如果我想从foo.py 中导入bar.py,我该怎么做?
【问题讨论】:
标签: python import path pythonpath
如果所有出现的目录都是 Python 包,即它们都包含__init__.py,那么你可以使用
from ..bar_dir import bar
如果目录不是 Python 包,您可以通过使用 sys.path 来做到这一点,但您不应该这样做。
【讨论】:
sys.path 混在一起可能是可以的。
ipython foo.py 时,我得到ImportError: attempted relative import with no known parent package。我已将__init__.py 文件添加到父目录和bar_dir 目录
您可以使用sys 和os 模块进行通用导入。在foo.py 中以行开头
import sys
import os
sys.path.append(os.path.abspath('../bar_dir'))
import bar
【讨论】:
foo.py 所在的同级目录。要使用脚本的目录,请使用sys.path.append(os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'bar')))
如果您在 python 3+ 中遇到问题,使用sys.path.append("..") 对我有用。
sys.path.append("..")
from bar_dir import bar
【讨论】:
假设你有以下结构:
root
|_ productconst.py
|_ products
|_ __init__.py
如果您想在products.__init__ 中导入productconst,则可以使用以下方法:
from ..productconst import *
【讨论】: