gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:15 25 4
gpt4 key购买 nike

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

但是当我将可执行文件添加到 foo 中的 PATH 并调用 foo 的 main 时,该可执行文件应位于 >PATH,它给出了一个错误:geckodriver executable must be in PATH。如果我在 main.py 中导入后立即将它添加到 PATH,它会正常工作。以下是示例代码:

ma​​in.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.py 中添加一致的 print 行,您可以轻松地检查 (a) 执行代码和执行代码的时间,以及 (b) 检索哪个路径main.py 文件,例如

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

关于python - python文件中的代码在导入时运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59034487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com