如何根据相对路径导入Python模块?
例如,如果dirFoo包含Foo.py和dirBar,和dirBar包含Bar.py,我怎么导入Bar.py到Foo.py?
这是一个直观的表示:
dirFoo\
Foo.py
dirBar\
Bar.py
Run Code Online (Sandbox Code Playgroud)
Foo希望包括Bar,但重组文件夹层次结构不是一种选择.
我已经尝试阅读有关兄弟进口甚至 包文档的问题,但我还没有找到答案.
具有以下结构:
??? LICENSE.md
??? README.md
??? api
? ??? __init__.py
? ??? api.py
? ??? api_key.py
??? examples
? ??? __init__.py
? ??? example_one.py
? ??? example_two.py
??? tests
? ??? __init__.py
? ??? test_one.py
Run Code Online (Sandbox Code Playgroud)
如何在脚本 examples和tests目录从导入
api模块,并可以从命令行运行?
此外,我想避免sys.path.insert每个文件的丑陋黑客.当然这可以在Python中完成,对吧?
我已经经历了许多Python相关的导入问题,但我无法理解这个问题/让它工作......
我的目录结构是:
Driver.py
A/
Account.py
__init__.py
B/
Test.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
====================
Driver.py
from B import Test
Run Code Online (Sandbox Code Playgroud)
=========
Account.py
class Account:
def __init__(self):
self.money = 0
Run Code Online (Sandbox Code Playgroud)
====================
Test.py
from ..A import Account
Run Code Online (Sandbox Code Playgroud)
==================
当我试图跑
python Driver.py
我收到了错误
Traceback(最近一次调用最后一次):
来自B进口测试
Driver.py从..A导入帐户输入"B/Test.py",第1行ValueError:尝试相对导入超出toplevel包