如何在构buildhtml的时候在virtualenv中查找模块的sphinx?

我想使用virtualenv而不是我的机器上的本地环境生成HTML文档。

我已经进入了virtualenv,但是当我运行make html我得到错误说模块不能被导入 – 我知道错误是由于模块在我的本地环境中不可用。 如何指定在search文档时应该使用哪个环境(例如virtualenv)?

这里的问题是make html使用sphinx-build命令作为一个普通的shell命令,它明确指定了在文件的第一行(即#!/usr/bin/python )使用哪个Python解释器。 如果Python以这种方式被调用,它将不会使用你的虚拟环境。

一个快速和肮脏的方法是通过从解释器显式调用sphinx-build Python脚本。 在Makefile ,可以通过将SPHINXBUILD更改为以下来实现:

 SPHINXBUILD = python <absolute_path_to_sphinx-build-file>/sphinx-build 

如果你不想修改你的Makefile你也可以从命令行传递这个参数,如下所示:

 make html SPHINXBUILD='python <path_to_sphinx>/sphinx-build' 

现在,如果你从你的VirtualEnv环境中执行make build ,它应该在你的环境中使用Python解释器,你应该看到Sphinxfind它所需要的所有东西。

我很清楚,这不是一个整洁的解决scheme,因为像这样的Makefile不应该承担sphinx-build文件的任何特定位置,所以对于更合适的解决scheme的任何build议都受到热烈的欢迎。

Mathijs正确地发现了这个问题。

 $ which sphinx-build /usr/local/bin/sphinx-build 

我解决了在虚拟环境中安装sphinx本身的问题。

激活环境:

 $ source /home/migonzalvar/envs/myenvironment/bin/activate $ pip install sphinx $ which sphinx-build /home/migonzalvar/envs/myenvironment/bin/sphinx-build 

这似乎够整齐了。

我有同样的问题,但我不能使用公认的解决scheme,因为我没有使用Makefile。 我从一个自定义的python构build文件中调用sphinx-build 。 我真正想要做的就是调用sphinx-build ,和我用python构build脚本一样的环境。 摆弄path太复杂,容易出错,所以最后我看起来像是一个优雅的解决scheme,即“手动”加载控制台脚本入口点并调用它:

 from pkg_resources import load_entry_point cmd = load_entry_point('Sphinx', 'console_scripts', 'sphinx-build') cmd(['sphinx-build', basepath, destpath])