2017-02-09 85 views
1

我有一个名为gaend的Google App Engine项目。我正在尝试使用readthedocs为其构建更好的文档。我已经使用如何为Google App Engine项目构建sphinx(readthedocs)文档?

> sphinx-quickstart 

建立我的基地sphinx项目。跟着

> 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)?

回答

1

我同样的问题,我不记得在那里我找到了解决办法,也许不会解决您的问题,但我解决了我的加入google_appengine文件夹和google_appengine/lib/yam/lib文件夹的路径conf.py文件在源文件夹内狮身人面像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'] 

我知道,这将是相对路径更好,但它为我工作。

狮身人面像需要运行你正在记录的程序是我不明白,但无论如何,是一个很好的工具。

+0

感谢胡安,我做https://github.com/samedhi/gaend/commit/d279e0ada41c2225b23498a6bb7ddba94ae624e5。在当地工作,但当readthedocs试图在他们的服务器上构建我的文档时,当然会失败......也许我缺少一个步骤或什么? –

0

我刚刚解决了同样的问题。不会有太多的问题询问有关狮身人面像+ 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() 
相关问题