我有两个文件,分别是main.py
和foo.py
。导入foo
时main
,我认为其中的行foo.py
不会自动运行。
但是,当我PATH
在in中添加一个可执行文件foo
,并在其中调用mainfoo
涉及应该在in的可执行文件时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
为什么第一次尝试不起作用并给出错误?谢谢。
这是一个疯狂的猜测,但是由于您要导入foo
为
from foo_file import foo
我认为这foo
是在一个子目录中,例如
+- main.py
\- foo_file
\- foo.py
因此,当您添加os.path.abspath(__file__)
到PATH时,它将添加子目录的路径,而不是包含的目录的路径,该目录main.py
可能是包含assets
文件夹的目录,因为您说如果直接在PATH中添加PATH的代码就可以正常工作main
。
如果您print
在foo.py
和main.py
文件中都添加了一致的行,则可以轻松地检查(a)代码的执行时间和执行时间,以及(b)检索哪个路径,例如
print(__file__, os.path.dirname(os.path.abspath(__file__)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句