实际上,我想通过传递主脚本输出作为该模块的输入来调用主脚本中间的一个模块,但是这不允许我运行主脚本,它会执行该模块并引发错误。有解决办法吗?
Main.py
from pic import get_imagepath #this module i m importing
# after detecting image from webcam i just want to pass it to get_imagepath
get_imagepath(image)
Pic.py
def get_imagepath(image):
...
...
return imagepath
rgb_image = load_image(image_path, grayscale=True)
error:
from pic import get_imagepath
File "C:\Users\ADMIN\Downloads\#########################\facenet\pic.py", line 42, in
<module>
rgb_image = load_image(image_path, grayscale=True)
NameError: name 'image_path' is not defined
这是场景。未定义其在导入时直接执行的图片脚本并引发诸如image_path之类的错误。请帮助我
答案 0 :(得分:1)
Python在导入模块时运行模块,这就是python应该如何工作的方式。如果您有应该导入的模块,则它们不应包含功能以外的指令。 (当然,除非您有合理的用例,否则应该在导入时执行代码)
if main
方法是编写应该导入的模块的Pythonic方式,但是如果它是自己执行的,它也可以做一些事情:
您将应该在执行模块时执行的代码放入名为main的函数中。
def main():
#stuff to de when executed directly
最后输入:
if __name__ == "__main__":
main()
仅当直接执行模块/脚本(例如,通过调用python script.py
或双击执行)时,才会执行主要功能 ,如果导入则不执行。
问题后编辑
您的编辑就是我所解释的一个例子,您的pic.py:
def get_imagepath(image):
...
...
return imagepath
rgb_image = load_image(image_path, grayscale=True)
#this gets executed upon import
rgp_image =...
部分在导入时执行,并且从您发布的image_path
代码中至今都没有定义,这就是失败的原因。