2010-11-08 16 views
34

Makinemdeki yerel ortam yerine bir virtualenv kullanarak html docs oluşturmak istiyorum.html oluştururken, virtualenv modüllerine sfenks nasıl bakılır?

Virtualenv girdikten ama make html çalıştırdığınızda ben modül alınamaz diyerek hataları olsun - ben hataları biliyorum benim ana ortamda kullanılamaz olmak modülüne kaynaklanmaktadır. Dokümanlar için arama yaparken hangi ortamın kullanılacağını nasıl belirleyebilirim (örneğin, virtualenv)? Burada

cevap

40

sorun make html açıkça dosyaya (yani. #!/usr/bin/python) ilk satırında kullanılacak Python yorumlayıcısı belirten normal kabuk komutu gibi sphinx-build komutu kullanır. Python bu şekilde çağrılırsa, sanal ortamınızı kullanmayacaktır.

Bunun etrafındaki hızlı ve kirli bir yöntem, sphinx-build Python komut dosyasını bir yorumlayıcıdan açıkça çağırmaktır. Değiştirmek istemiyorsanız aşağıdaki şekilde

SPHINXBUILD = python <absolute_path_to_sphinx-build-file>/sphinx-build 

senin Makefile ayrıca, komut satırından bu parametreyi iletebilirsiniz: Makefile, bu aşağıdakilere SPHINXBUILD değiştirerek elde edilebilir

make html SPHINXBUILD='python <path_to_sphinx>/sphinx-build' 

VirtualEnv ortamınızdan make build'u çalıştırırsanız, Python yorumlayıcısını çevrenizden kullanmalı ve Sphinx'in gereken tüm güzellikleri bulmasını sağlamalısınız.

Bunun düzgün bir çözüm olduğunu unutmayın, Makefile gibi sphinx-build dosyasının belirli bir konum belirtmemesi gerekiyor, dolayısıyla daha uygun bir çözüm önerileri kesinlikle karşılanıyor.

+13

kullanabilirsiniz [kabuk fonksiyonu] (http://www.gnu.org/software/make/manual/make.html#Shell-Function) mutlak yolu kodlamaktan kaçınmak için: '' SPHINXBUILD = python $ (kabuklu sfenks-yapı) ' – ento

+2

'SPHINXBUILD = python -m sfenks' (Sfenks 1.4.5'ten itibaren aynıdır) önermemeyi tercih ederim. – bufh

+0

Bu cevap beni kurtardı. Teşekkürler! Ben sadece 'scl' içinde de iyi çalıştığını eklemek istedim, bunun gibi: 'scl enable python27 'html SPHINXBUILD =/nfs/tools/lib/python/2.7/current/bin/sphinx-build'' –

39

Sorun Mathijs tarafından doğru bir şekilde tespit edilmiştir.

$ which sphinx-build 
/usr/local/bin/sphinx-build 

Sanal ortamda sphinx'in kendisini kurmasıyla bu sorunu çözdüm. aktive ortamı ile

:

$ source /home/migonzalvar/envs/myenvironment/bin/activate 
$ pip install sphinx 
$ which sphinx-build 
/home/migonzalvar/envs/myenvironment/bin/sphinx-build 

Yeterince temiz görünüyor.

+3

Bu, bugüne kadarki en temiz çözümdür - Makefile vb. Kabul edilen çözüm olmalı, IMHO. – Jeet

+1

+1 Bu cevap kabul edilmiş cevaba göre birleştirilmelidir –

+0

Bu doğru çözümdür. Mathijs'in fikri yakın, ama bu tam olarak ne yapmanız gerektiği. Lütfen kabul edildi olarak işaretleyin! – eepp

0

Aynı problem vardı ama kabul edilen çözümü kullanamadım çünkü Makefile'yı kullanmadım. Özel bir python oluşturma dosyasından sphinx-build numaralı telefonu aradım. Yapmak istediğim şey, sphinx-build'u python derleme betiğimi çağırdığım tam olarak aynı ortamla aramaktı. yolları ile Oynanmış eğilimli çok karmaşık ve hata, bu yüzden "elle" konsol komut giriş noktası yük ve çağırmaktır; zarif bir çözüm gibi geliyor bana neyi ile sona erdi:

from pkg_resources import load_entry_point 
cmd = load_entry_point('Sphinx', 'console_scripts', 'sphinx-build') 
cmd(['sphinx-build', basepath, destpath]) 
İlgili konular