繁体   English   中英

如何为 Google App Engine 项目构建 sphinx (readthedocs) 文档?

[英]How do I build sphinx (readthedocs) documentation for Google App Engine projects?

我有一个名为gaend的 Google App Engine 项目。 我正在尝试使用readthedocs为其构建更好的文档。 我用过了

> sphinx-quickstart

构建我的基本狮身人面像项目。 其次是

> sphinx-apidoc -o . ../gaend

生成项目的 API 列表。 然后我跑

sphinx-autobuild . _build/html

+--------- manually triggered build ---------------------------------------------
| Running Sphinx v1.5.2
| loading pickled environment... done
| building [mo]: targets for 0 po files that are out of date
| building [html]: targets for 0 source files that are out of date
| updating environment: 0 added, 1 changed, 0 removed
| reading sources... [100%] gaend
/Users/stephen/gaend/docs/gaend.rst:10: WARNING: autodoc: failed to import module u'gaend.bigquery'; the following exception was raised:
Traceback (most recent call last):
File "/Users/stephen/.virtualenvs/gaend/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 551, in import_object
__import__(self.modname)
File "/Users/stephen/gaend/gaend/bigquery.py", line 1, in <module>
   from google.cloud import bigquery
ImportError: No module named google.cloud
...
ImportError: No module named google.appengine.ext

我认识到问题在于它无权访问 Google Cloud SDK。 我在运行我的单元测试时遇到了类似的问题,解决这个问题的方法是在runner.py 中 但是,这依赖于在我的系统上某处安装了 Google Cloud SDK(安装了 Python Google App Engine 模块)。 我将如何在构建我的文档的readthedocs服务器上获取 Google Cloud SDK(和 Python GAE)?

我是同样的问题,我不记得我在哪里找到了解决方案,也许没有解决您的问题,但我解决了我的问题,在您的conf.py文件中添加了google_appengine文件夹和google_appengine/lib/yam/lib文件夹的conf.py Sphinx doc 文件夹内的源文件夹,如下所示:

conf.py

sys.path.insert(0, os.path.abspath('../../'))
sys.path.insert(1, '<your local full path>/google_appengine')
sys.path.insert(1, '<your local full path>/google_appengine/lib/yaml/lib')

if 'google' in sys.modules:
    del sys.modules['google']

我知道使用相对路径会更好,但它对我有用。

Sphinx 需要运行您正在记录的程序,我不太明白,但无论如何,它是一个很好的工具。

我刚刚解决了同样的问题。 关于 Sphinx + GAE 的问题并不多,所以我发布了对我conf.py代码,希望它能帮助其他人:

import os
import sys
project_id = 'gae-project-id'
# environment variables that several utils are assuming are present
if not os.environ.get('SERVER_SOFTWARE', None):
    os.environ['SERVER_SOFTWARE'] = 'Development-'+project_id
if not os.environ.get('APPLICATION_ID', None):
    os.environ['APPLICATION_ID'] = 'dev~'+project_id
# project root
sys.path.insert(0, os.path.dirname(__file__))
# downloaded third party libs
sys.path.insert(0, os.path.dirname(__file__)+"/lib")
# path to gae sdk
sdk_path = os.path.join('~/google-cloud-sdk', 'platform/google_appengine')
try:
    import google
    google.__path__.append("{0}/google".format(sdk_path))
except ImportError:
    pass
sys.path.insert(0, os.path.expanduser(sdk_path))
import dev_appserver
dev_appserver.fix_sys_path()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM