2012-09-12 21 views
6

Ben html belgelerini oluşturmak istediğim oldukça büyük bir kod tabanı miras aldım. Python'da yazıldığından beri sfenks kullanmaya karar verdim, çünkü kodun kullanıcıları sfenks ile oluşturulan python-belgeselin tasarımına ve işlevselliğine alıştılar. Rst dosyalarını otomatik olarak oluşturmak için sphinx-apidoc komutunu kullandım. Sfenksin kodu bulabilmesi için modül yolunu sys.path'a aktardım. Şimdiye kadar çok iyi. Ancak, html'yi make html komutunu kullanarak oluşturmaya çalıştığımda, birçok tracebackin çıkması ve kod tabanındaki bazı örneklerin çalıştırılması gibi görünüyor. Bunun nedeni ne olabilir ve bunun olmasını nasıl engelleyebilirim?Sfenks kodumu 'html yap' komutunu çalıştırıyor mu?

+1

Kod tabanında, örneğin, bir __ __ __ __ 'gibi kod örnekleri var mı? Ya da doctest'ler (bilirsiniz, bir doktora test eder)? –

+0

İyi soru. Tekrar çalıştırmak için tereddüt ediyorum. Sfenks-apidoc için kesin komut şuydu: sphinx-apidoc -f-F -o. ../ src', html’i yapar. Bu, doktrinlerin uygulanmasını başlatır mı? Eğer öyleyse, bunu yapmasını nasıl engelleyebilirim? – AME

+1

(1) '__main__' içinde bir kodunuz olup olmadığını kontrol edin; (2) ['doctest'] (http://sphinx.pocoo.org/ext/doctest.html) uzantısını kullanmıyorsanız, iyi olmalısınız. Emin olmak için yapılandırma dosyanızı kontrol edin. –

cevap

8

autodoc kullanırken, Sphinx belgelenen modülleri içe aktarır, böylece tüm modül düzeyinde kod yürütülür. Bu her zaman "html yap" olur. Bu anlamda, Sphinx kodunuzu "çalıştırır".

Hataları değiştirmek için kodunuzu biraz farklı bir şekilde düzenlemeniz gerekebilir (modül düzeyi kodu işlevlere taşıyın). Ne olabileceğine bir örnek için bkz. this question.

Bu benim tahminimdir, ancak hikayenin tamamı olmayabilir. Ek bilgi olmadan daha fazla söylemek zor.

0
def main(): 

    print('hello world') 

if __name__ == '__main__': 

    main() 

Bu şekilde kodunuz çalışmaz.

+0

Biraz daha fazla açıklama muhtemelen OP ve diğerlerine yardımcı olur –