El problema aquí es que make html
usa el comando sphinx-build
como un comando de shell normal, que especifica explícitamente qué intérprete de Python usar en la primera línea del archivo (es decir, #!/usr/bin/python
). Si se invoca Python de esta manera, no usará su entorno virtual.
Una manera rápida y sucia de esto es llamando explícitamente al script de Python sphinx-build
de un intérprete. En el Makefile
, esto se puede lograr mediante el cambio SPHINXBUILD
a lo siguiente:
SPHINXBUILD = python <absolute_path_to_sphinx-build-file>/sphinx-build
Si no desea modificar su Makefile
También puede hacer pasar este parámetro desde la línea de comandos, de la siguiente manera:
make html SPHINXBUILD='python <path_to_sphinx>/sphinx-build'
Ahora, si ejecuta make build
desde su entorno VirtualEnv, debería usar el intérprete de Python desde su entorno y debería ver a Sphinx encontrar todos los accesorios que necesita.
Soy consciente de que esta no es una solución clara, ya que un Makefile
como este no debe asumir ninguna ubicación específica para el archivo sphinx-build
, por lo que cualquier sugerencia para una solución más adecuada es bienvenida.
Usted puede utilizar el [función de shell] (http://www.gnu.org/software/make/manual/make.html#Shell-Function) para evitar el hardcoding de la ruta absoluta: '' SPHINXBUILD = python $ (shell que sphinx-build) ' ' – ento
Prefiero sugerir' SPHINXBUILD = python -m sphinx' (a partir de Sphinx 1.4.5 es el mismo), que es más portable en make y evita una subshell. – bufh
Esta respuesta me salvó. ¡Gracias! Solo quería agregar que también funciona bien en 'scl', así:' scl enable python27 'make html SPHINXBUILD =/nfs/tools/lib/python/2.7/current/bin/sphinx-build'' –