我想从另一个目录中的文件(fileA.py)访问模块(fileB.py)的内容。我在fileA.py中尝试了以下代码:
from ..subpackageB import fileB
但是,我得到了错误:
ImportError: attempted relative import with no known parent package
项目的结构与此类似:
toplevel_package/
├── file.py
└── subpackageA
└── fileA.py
└── subpackageB
├── __init__.py
└── fileB.py
__ init__.py文件为空
答案 0 :(得分:0)
如果您使用的是PyCharm,则可以将subpackageB
标记为源根,然后删除该dotes。
请参见示例here。
答案 1 :(得分:-1)
您需要将PYTHONPATH
环境变量设置为toplevel_package
文件夹路径。
完成后,任何导入语句都将从该位置“开始”。
然后,您可以这样做:
from subpackageB import fileB
另一种方法是将项目根目录添加到sys.path中,例如sys.path.insert(0, 'toplevel_package_path')
,但这需要在导入任何模块之前在所有脚本中执行此操作。
答案 2 :(得分:-1)
这可能有点棘手
import os,sys
sys.path.insert(1, os.path.join(sys.path[0], '..'))
from subpackageB import fileB
阅读此https://docs.python.org/3/library/sys.html#sys.path应该会有所帮助。