我想在我的机器上使用 virtualenv 而不是本机环境来构建 html 文档。
我已经进入了 virtualenv,但是当我运行时,make html
我收到错误消息,提示无法导入模块 - 我知道这些错误是由于该模块在我的本地环境中不可用。在搜索文档时如何指定应该使用哪个环境(例如 virtualenv)?
我想在我的机器上使用 virtualenv 而不是本机环境来构建 html 文档。
我已经进入了 virtualenv,但是当我运行时,make html
我收到错误消息,提示无法导入模块 - 我知道这些错误是由于该模块在我的本地环境中不可用。在搜索文档时如何指定应该使用哪个环境(例如 virtualenv)?
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
它看起来足够整洁。
这里的问题是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'
现在,如果您make build
在 VirtualEnv 环境中执行,它应该在您的环境中使用 Python 解释器,您应该会看到 Sphinx 找到它需要的所有好东西。
我很清楚这不是一个简洁的解决方案,因为Makefile
这样不应该假定sphinx-build
文件的任何特定位置,所以任何关于更合适解决方案的建议都受到热烈欢迎。
我有同样的问题,但我无法使用公认的解决方案,因为我没有使用 Makefile。sphinx-build
我是从自定义 python 构建文件中调用的。我真正想做的是sphinx-build
使用与调用 python 构建脚本完全相同的环境进行调用。摆弄路径太复杂且容易出错,所以我最终得到了一个在我看来很优雅的解决方案,即“手动”加载控制台脚本入口点并调用它:
from pkg_resources import load_entry_point
cmd = load_entry_point('Sphinx', 'console_scripts', 'sphinx-build')
cmd(['sphinx-build', basepath, destpath])