我有两个文件,比如main.py
和foo.py
。当我在main
中导入foo
时,我认为foo.py
中不在函数中的行会自动运行。
但是当我在foo
中添加一个可执行文件到PATH
中,并调用涉及应该在PATH
中的可执行文件的 mainfoo
时,它会给出一个错误:壁虎驱动程序可执行文件必须在 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
为什么第一次尝试不起作用并给出错误?谢谢。
这是一个疯狂的猜测,但由于您正在导入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
和main.py
文件中都添加了一致的print
行,则可以轻松检查(a(代码的执行时间和时间,以及(b(检索到的路径,例如
print(__file__, os.path.dirname(os.path.abspath(__file__)))