python文件中的代码在导入时何时运行?



我有两个文件,比如main.pyfoo.py。当我在main中导入foo时,我认为foo.py中不在函数中的行会自动运行。

但是当我在foo中添加一个可执行文件到PATH中,并调用涉及应该在PATH中的可执行文件的 mainfoo时,它会给出一个错误:壁虎驱动程序可执行文件必须在 PATH 中。如果我在导入后立即将其添加到PATHmain.py中,它可以正常工作。 以下是示例代码:

main.py

# some imports
from foo_file import foo
foo.main()

foo.py

import os
FILENAME = os.path.dirname(os.path.abspath(__file__))
os.environ["PATH"] += os.pathsep + os.path.join(FILENAME, "assets")
def main():
# some work involves selenium

为什么第一次尝试不起作用并给出错误?谢谢。

这是一个疯狂的猜测,但由于您正在导入foo

from foo_file import foo

我假设foo在子目录中,即类似

+- main.py
- foo_file
- foo.py

因此,当您将os.path.abspath(__file__)添加到 PATH 时,它将添加子目录的路径,而不是包含main.py的目录的路径,这可能是包含assets文件夹的目录,因为您说过如果 PATH 添加代码直接在main中,它可以正常工作。

如果您在foo.pymain.py文件中都添加了一致的print行,则可以轻松检查(a(代码的执行时间和时间,以及(b(检索到的路径,例如

print(__file__, os.path.dirname(os.path.abspath(__file__)))