代码之家  ›  专栏  ›  技术社区  ›  Brendan

如何开发Python模块/包而不必在每次更改后重新启动解释器?

  •  6
  • Brendan  · 技术社区  · 16 年前

    我知道 reload() frowned upon (也是因为它已经从Python 3.0的内置版本降级),而且它很少工作,因为模块几乎总是有多个引用。

    我的问题是-开发Python模块/包的最佳/公认方法是什么,这样我就不必经历不断重新建立解释器上下文的痛苦?

    if __name__ == '__main__': 直接运行模块以便不导入代码的技巧。然而,这在我的模块文件的底部留下了一堆上下文错误(特定于我的设置)。

    4 回复  |  直到 6 年前
        1
  •  2
  •   mmmmmm    16 年前

    Ipython不允许重新加载。请参阅神奇的函数%run iPython doc

    或者如果该函数下的模块更改了递归dreloadd()函数

        2
  •  3
  •   Will Hardy    16 年前

    另一种方法可能是将测试驱动开发形式化,而不是使用解释器来测试模块,而是保存测试并直接运行它们。

    您可能知道使用python执行此操作的各种方法,我想从这个方向开始最简单的方法是将您在解释器中执行的操作作为doctest复制并粘贴到docstring中,并将以下内容添加到模块底部:

    if __name__ == "__main__":
        import doctest
        doctest.testmod()
    

    doctest docs 有关编写博士学位的更多信息。

        3
  •  1
  •   Ryan Ginstrom    16 年前

    使用如何 nose 具有 nosey

        4
  •  0
  •   Tanj    16 年前

    您可以创建一个python脚本来设置上下文并使用

    python -i context-setup.py
    
    
       -i     When  a  script  is passed as first argument or the -c option is
              used, enter interactive mode after executing the script  or  the
              command.  It does not read the $PYTHONSTARTUP file.  This can be
              useful to inspect global variables  or  a  stack  trace  when  a
              script raises an exception.