在App Engine上安装Sphinx -可能吗?
接着我去年关于文档的提问,我现在想开始尝试使用基于Python的Sphinx来整理我正在开发的一个PHP内容管理系统的开发文档。
我不想在自己的电脑上安装Python,而是希望从一开始就能在一个可以公开访问的网络服务器上运行。现在我能接触到的所有网络托管服务都是基于LAMP架构的,我不太想花钱去买Python的托管服务。我对Google App Engine很感兴趣,他们提供的免费配额对我来说绰绰有余,即使不够,他们的收费看起来也很合理。
不过,我对Python一无所知,能让Sphinx运行将是我第一次接触Python,而且我时间也很紧。根据我的理解,App Engine提供的平台和Python库与标准的Python库是非常兼容的,但并不是完全相同。
所以我想问:
Sphinx能在App Engine上运行吗?
在App Engine上安装Sphinx的过程是否和在普通的Python环境中安装一样简单?还是说App Engine的环境需要我修改源代码,而我现在的Python水平可能没办法在合理的时间内做到?
我是否应该先在本地服务器和“正常”的Python环境中安装Sphinx?
有没有人知道一些有用的教程、指南或其他资源可以参考?
4 个回答
根据我的经验,使用 dev_appserver
在本地部署和使用 appcfg
在远程部署之间的区别,主要就是我执行哪个命令。话虽如此,我对 Sphinx 没有经验。
你根本不需要在GAE上安装Sphinx。
Sphinx是用来创建静态的HTML、CSS和JS文件的。当这个步骤完成后,你只需要把Sphinx生成的所有文件上传上去。
Sphinx生成的输出(HTML、CSS和JS)只需从一个地方提供。你把在本地创建的文档上传到GAE,作为静态文件来提供。就这样,完成了。
Sphinx完全不需要在网络服务器上“安装”。Sphinx不是一个网络应用,它不会在你的网络服务器上运行。你只是在开发时短暂运行它,来把文档发布成HTML、LaTeX或其他格式。一旦你创建了静态的HTML文件,就不再需要Sphinx的任何部分了。
Sphinx能在App Engine上运行吗?
我想是可以的,但你根本不需要这么做。
在App Engine上安装Sphinx是否简单...
这无所谓,因为你不需要在那儿安装它。你在自己的工作站上安装并使用它。
我应该先在本地服务器和“正常”的Python环境上安装Sphinx吗?
不要在服务器上安装它。安装在你的工作站上就可以了。
有没有人知道一些有用的教程、指南或其他资源?
如果你说的“这个”是指“在网络服务器上安装”,那么答案是“没有”。根本不需要在网络服务器上安装它。所以没有关于“在网络服务器上安装”的教程或资源。
如果你说的“这个”是指“用Sphinx创建文档”,那么答案是“去看看https://www.sphinx-doc.org,那里有什么不足吗?”
我希望Sphinx的“引擎”能够从任何地方访问,这样我(和其他可能的贡献者)就不依赖于特定的工作站。
Sphinx就像一个编译器。每个人在自己的工作站上都有一份副本。他们下载文档源文件,进行修改,提交源文件的更改,然后上传生成的文档。
从同一个地方提供生成的文档。
没错。在你下载源文件、进行修改、重新生成文档并提交更改后,你上传生成的文档,这样它就会从一个——而且只有一个——地方提供。
Sphinx是一个编译器。它不是一个“网络引擎”。它是一个简单的编译器,可以把你的文档编译成HTML,以便提供给大家。
这个项目很有意思!你可能会遇到一个主要问题,那就是文件系统的访问:在App Engine上,文件系统是只读的。而根据源代码来看,Sphinx这个工具是比较死板地依赖文件系统来输出内容的。它还希望从本地文件系统读取配置文件和输入文件,这样的话,如果你想为其他项目生成文档就会变得很麻烦,因为这些项目并不是和应用一起打包的。
虽然可以找到解决办法,但这需要你写一个简单的虚拟文件系统,利用App Engine的数据存储,并且还要用到一种叫做猴子补丁的技术,让它能和普通的Python文件接口一起工作。这对于一个“刚接触Python”的项目来说,难度有点大!
如果你在考虑让用户上传项目以便生成文档,还有一件事需要注意:Sphinx的配置文件是用Python写的,所以执行这个文件可能会很危险——用户可以通过恶意的配置文件对你的应用做一些坏事!