【问题标题】:Use functions from main file in imported file在导入文件中使用主文件中的函数
【发布时间】:2013-03-29 20:07:51
【问题描述】:

我正在尝试构建一些 python 脚本。我在我的主脚本(start.py)中导入了(import Handler)一组函数。在 start.py 中,我调用其中一个导入的函数来从 config (dir1) 动态导入脚本。我需要在从配置导入的文件之一中使用 1 个函数(消息(自我,文本)在 MyScript(协议)类中我的主脚本 start.py 中的内容)。 所以我的目录结构是:

MainDir
  start.py (main script)
  Handler.py
  config.cfg
  dir1 (dir with plugins)
    HelloWorld.py (this needs to use function from start.py)

你能帮帮我吗? 谢谢你。 编辑: Start.py 是 Twisted TCP 服务器,我需要在我的插件中使用一些扭曲的功能。

【问题讨论】:

  • 显而易见的解决方案是 (a) 将这些功能从 start.py 中移出并移到 start 和插件都可以导入的模块中,(b) 使 start 可以导入的(也就是说,确保你做的if __name__ 位正确,等等),或者(c)将函数集合(甚至可能是start 模块本身,如果你真的想要的话)传递给任何需要调用功能。其中一个对你不起作用是有原因的吗?
  • @suspectus: RuntimeError: maximum recursion depth exceeded
  • 我的 start.py 是一个扭曲的 TCP 服务器,我的插件中需要一些功能(例如向客户端发送消息)。如果我导入它,twisted 将启动新服务器,所以这不合适。如何移动函数以在扭曲协议之外向客户端发送消息?

标签: python twisted


【解决方案1】:

这里有几个选项:

  1. 将函数作为参数传递给调用它的代码(如果您需要该代码在不同的情况下调用不同的函数,这可能是合适的)。
  2. 使用 python 的 -m 选项将 start.py 作为常规模块加载(即 python -m start)。然后你可以像任何其他 python 模块一样导入 start 并引用它的消息函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多