我发布这个是因为这个问题(Import a module from a relative path)的答案对于我们这些可能首先提出问题的人来说是不可用的。
假设我有以下文件结构(我保留了与其他问题相同的命名约定):
C:\dirMain\
dirFoo\
Foo.py
dirBar\
Bar.py
我想从Bar.py
内导入Foo.py
。
这样的事情:(我的C在这里显示,对不起):
# Foo.py
from ../dirBar/Bar import *
请随意标记为副本,但请先检查其他回复;我见过的大多数都过于复杂,不起作用或者不完整。这是一个简单的问题,希望有一个简单的答案。
我尝试过的事情:
1)Puffin GDI的建议如下:
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
结果:
NameError:未定义名称“文件”
对此的解决方案表面上位于this answer中,我不知道。
2)从这里开始:How to import a module given the full path?
import imp
abc = imp.load_source('bar.py', 'C:\dirMain\dirBar.py')
结果:
IOError:[Errno 22]参数无效
3)如下所述:Import a module from a relative path
(首先将__init__.py
添加到/dirBar
)
from ..dirBar import Bar
结果:
ValueError:在非包中尝试相对导入
答案 0 :(得分:0)
在所有程序中导入根路径。在所有程序中从根开始旅行路径。
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
或
root = "C:\dirMain"
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), root)))
您可以在配置中编写根路径,然后
from dirBar.Bar import class_name