Problem polega na tym, że make html
używa komendy sphinx-build
jako normalnej komendy powłoki, która jawnie określa, który interpreter języka Python ma użyć w pierwszym wierszu pliku (tj. #!/usr/bin/python
). Jeśli Python zostanie wywołany w ten sposób, nie użyje twojego środowiska wirtualnego.
Szybkim i brudnym sposobem jest otwarcie wywołania skryptu Python sphinx-build
od tłumacza. W Makefile
, można to osiągnąć poprzez zmianę SPHINXBUILD
na następujące kwestie:
SPHINXBUILD = python <absolute_path_to_sphinx-build-file>/sphinx-build
Jeśli nie chcesz zmodyfikować Makefile
można również przekazać ten parametr z wiersza poleceń, co następuje:
make html SPHINXBUILD='python <path_to_sphinx>/sphinx-build'
Teraz, jeśli wykonasz make build
z poziomu środowiska VirtualEnv, powinieneś użyć interpretera Pythona z twojego środowiska i powinieneś zobaczyć Sphinx znajdującego wszystkie potrzebne mu upominki.
Doskonale zdaję sobie sprawę, że nie jest to zadowalające rozwiązanie, ponieważ Makefile
w ten sposób nie powinno zakładać żadnej konkretnej lokalizacji dla pliku sphinx-build
, więc wszelkie sugestie dotyczące bardziej odpowiedniego rozwiązania są mile widziane.
można użyć [funkcja powłoki] (http://www.gnu.org/software/make/manual/make.html#Shell-Function), aby uniknąć zakodowania bezwzględnej ścieżki: '' SPHINXBUILD = python $ (powłoka, która tworzy sphinx) ' ' – ento
Wolałbym zasugerować' SPHINXBUILD = python -m sphinx' (od Sphinx 1.4.5 jest taki sam), który jest bardziej przenośny przez make i unikanie podpowłoki. – bufh
Ta odpowiedź mnie uratowała. Dzięki! Chciałem tylko dodać, że działa to również w 'scl', tak jak to:' scl enable python27 'make html SPHINXBUILD =/nfs/tools/lib/python/2.7/current/bin/sphinx-build'' –