0

我有 2 个脚本。

Main.py
Update.py

我在Main.py中有一个函数,它基本上执行以下操作:

def log(message):
   print(message)
   os.system("echo " + message + " >> /logfile.txt")

Update.py文件中,我有一个基本上可以进行更新的函数。然而,在整个更新函数中,它调用“log(message)”,无论当时的消息是什么。

现在的问题是我得到一个NameError: global name "log" is not defined每当我尝试使用Main.py脚本之外的函数时。

有什么帮助吗?关于如何在任何地方使用“日志”功能?

*代码简化解释。

编辑:

Main.py imports Update from /Scripts/Update.py
Update.py imports log from Main.py

当我尝试这个时,它失败说“无法导入名称更新”

4

3 回答 3

3

不要logMain. _ 这将重新运行 Main.py 中的代码,因为将 Main.py 作为脚本运行并将其作为模块导入是不等价的。其他模块不应依赖于主脚本中定义的函数。相反,将您的log函数放在另一个模块中并导入它,或者让 Main.py 以某种方式显式地将记录器传递给其他模块。

更新:您无法导入Update,因为 Python 找不到它。Python 在4 个地方检查要导入的模块,但您应该感兴趣的是

  • 脚本所在的目录,以及
  • PYTHONPATH环境变量中指定的目录。

您要么需要将 Main.py 及其导入的内容放在同一目录中,要么将其添加/Scripts到您的PYTHONPATH.

于 2013-07-14T18:56:41.733 回答
1

只需添加Update.py

from Main import log

您将能够log()从 Update.py 调用。

于 2013-07-14T18:50:33.340 回答
1

您应该导入该功能:

from Main import log

或者最好:

import Main
Main.log()

对于相互导入的模块,请参阅我如何拥有相互导入的模块

于 2013-07-14T18:50:48.080 回答