如果您的 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