我有两个文件,例如main.py
和foo.py
。当我在foo
中导入main
时,我以为foo.py
中的行不会自动运行。
但是,当我将可执行文件添加到PATH
中的foo
并调用foo
的主体时,涉及该可执行文件的主体应该在PATH
中,它将产生错误: geckodriver可执行文件必须位于PATH 中。如果我在PATH
中导入后立即将其添加到main.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
为什么第一次尝试不起作用并给出错误信息?谢谢。
答案 0 :(得分:2)
这是一个疯狂的猜测,但是由于您将foo
导入为
from foo_file import foo
我假设foo
在子目录中,例如
+- main.py
\- foo_file
\- foo.py
因此,将os.path.abspath(__file__)
添加到PATH时,它将添加子目录的路径,而不是包含main.py
的目录的路径,该目录可能是包含assets
的目录文件夹,因为您说如果添加PATH的代码直接在main
中可以正常工作。
如果在print
和{{1中都添加了一致的foo.py
行,则可以轻松地检查(a)代码的执行时间和执行时间,以及(b)检索的路径。 }}文件,例如
main.py