如何为python路由器模块创建一个文档字符串



我想在gae中为我的路由器模块创建一个docstring。我也知道它必须是模块中的第一件事(在文件编码类型之后)。

问题是,如果你单独运行这个模块,你只会得到一个导入错误(No module named webapp2)。我想要的是打印文档字符串时运行的文件,但这个导入错误只是不让我。有什么办法可以做到吗?

我试着:

if __name__ == "__main__":
    print help(self)

和其他组合,但都没有成功。

[编辑]

无具体代码。可以是appengine的例子:

# coding: utf-8
""" docstring """
import webapp2
class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!')
app = webapp2.WSGIApplication([('/', MainPage)],
                              debug=True)

当您将其作为独立运行时,ImportError会发生,因为它不包含作为应用程序运行时包含的任何'魔法'。例如,如果您查看dev_appserver.py(只是用于运行开发服务器的基本功能),您将看到这个函数:

def fix_sys_path(extra_extra_paths=()):
  """Fix the sys.path to include our extra paths."""
  extra_paths = EXTRA_PATHS[:]
  extra_paths.extend(extra_extra_paths)
  sys.path = extra_paths + sys.path

在这里你可以看到sys.path正在被修改,以包括一些"额外的"路径,如果我们看看其中一个,你会看到webapp2(以及SDK中提供的其他库):

EXTRA_PATHS = [
  # ...other similar setups...
  os.path.join(DIR_PATH, 'lib', 'webapp2'),
  # ...other similar setups...
]

您可以看到GAE正在幕后执行一些额外的步骤,以便您可以毫无问题地使用import webapp2。因此,当你尝试自己运行它时,你会得到这个错误,因为你的系统只是检查webapp2的标准路径(你可能没有安装)。

这并没有真正回答你的问题:)至于这一点,我相信肯定有更优雅/适当的方法来处理这个问题,但是你可以尝试的一件事是在try/except块和ImportError上包装你的导入,检查你是否直接运行模块。如果是,调用模块docstring并退出。注意,这只是一个示例—如果您要实际使用它,您将希望使其更精细:

"""Module information."""
import sys
try:
    import webapp2
except ImportError:
    if __name__ == '__main__':
        print __doc__
    else:
        print 'Webapp2 not found'
    sys.exit(1)

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!')
app = webapp2.WSGIApplication([('/', MainPage)],
                              debug=True)

如果直接运行,将打印Module information

相关内容

  • 没有找到相关文章

最新更新