如果您的 sys.path 使用相对目录,python 会在哪里查找?
Where does python look if your sys.path uses relative directory?
我有一个这样的项目:
project/
foo/
other.py
bar/
baz.py
如果我编写如下代码:
import sys
sys.path.insert(0, '../foo')
from foo import other
没用。但是,如果我将 foo 移动到 bar 目录中,它就可以工作。我意识到这是错误的代码风格,但是如何搜索这个相对路径以及文档在哪里定义它?
from foo import other
会将 foo
附加到 sys.path
中的每个目录。所以它正在寻找 ../foo/foo/other.py
,但实际路径只是 ../foo/other.py
.
您只需将 ..
插入 sys.path
,然后它就会查找 ../foo/other.py
。或者,如果您只想在路径中包含该目录,只需使用 import other
,而不使用 from foo
.
假设您在 baz
目录中,您需要在路径中包含您的父目录 ..
。然后当你执行 from foo
时,找到你父目录中的 foo 目录。
这个有效:
import sys
sys.path.insert(0, '..')
from foo import other
阅读更多:
或者,由于您在路径中包含 ../foo
,您可以简单地执行 import other
,如下所示:
import sys
sys.path.insert(0, '..\foo')
import other
我有一个这样的项目:
project/
foo/
other.py
bar/
baz.py
如果我编写如下代码:
import sys
sys.path.insert(0, '../foo')
from foo import other
没用。但是,如果我将 foo 移动到 bar 目录中,它就可以工作。我意识到这是错误的代码风格,但是如何搜索这个相对路径以及文档在哪里定义它?
from foo import other
会将 foo
附加到 sys.path
中的每个目录。所以它正在寻找 ../foo/foo/other.py
,但实际路径只是 ../foo/other.py
.
您只需将 ..
插入 sys.path
,然后它就会查找 ../foo/other.py
。或者,如果您只想在路径中包含该目录,只需使用 import other
,而不使用 from foo
.
假设您在 baz
目录中,您需要在路径中包含您的父目录 ..
。然后当你执行 from foo
时,找到你父目录中的 foo 目录。
这个有效:
import sys
sys.path.insert(0, '..')
from foo import other
阅读更多:
或者,由于您在路径中包含 ../foo
,您可以简单地执行 import other
,如下所示:
import sys
sys.path.insert(0, '..\foo')
import other