Il problema è che make html
utilizza il comando sphinx-build
come un normale comando di shell, che specifica esplicitamente quale interprete Python utilizzare nella prima riga del file (ad esempio #!/usr/bin/python
). Se Python viene richiamato in questo modo, non utilizzerà il tuo ambiente virtuale.
Un modo rapido e disordinato è chiamando esplicitamente lo script Python sphinx-build
da un interprete. Nel Makefile
, questo può essere realizzato modificando SPHINXBUILD
al seguente:
SPHINXBUILD = python <absolute_path_to_sphinx-build-file>/sphinx-build
Se non si desidera modificare il vostro Makefile
si può anche passare questo parametro dalla riga di comando, come segue:
make html SPHINXBUILD='python <path_to_sphinx>/sphinx-build'
Ora se si esegue make build
dall'interno dell'ambiente VirtualEnv, si dovrebbe utilizzare l'interprete Python dall'interno dell'ambiente e si dovrebbe vedere Sphinx trovando tutti gli oggetti necessari.
Sono ben consapevole che questa non è una soluzione ordinata, in quanto uno Makefile
come questo non dovrebbe assumere alcuna posizione specifica per il file sphinx-build
, quindi qualsiasi suggerimento per una soluzione più adeguata è accolto calorosamente.
È possibile utilizzare la [funzione shell] (http://www.gnu.org/software/make/manual/make.html#Shell-Function) per evitare di codificare il percorso assoluto: '' SPHINXBUILD = python $ (shell which sphinx-build) ' ' – ento
Preferisco suggerire' SPHINXBUILD = python -m sphinx' (come di Sphinx 1.4.5 è lo stesso), che è più portabile su make ed evita una subshell. – bufh
Questa risposta mi ha salvato. Grazie! Volevo solo aggiungere che funziona bene anche in 'scl', come questo:' scl enable python27 'crea html SPHINXBUILD =/nfs/tools/lib/python/2.7/current/bin/sphinx-build'' –