如何在构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])