2012-04-25 31 views
50

मैं स्फिंक्स के साथ शुरू करने की कोशिश कर रहा हूं और लगातार समस्याएं प्रतीत होती हैं।स्फिंक्स-बिल्ड विफल - ऑटोडोक मॉड्यूल को आयात/ढूंढ नहीं सकता

कमान: docs/sphinx-quickstart

मैं सभी सवालों के जवाब और सब कुछ ठीक काम करता है।

कमान: docs/ls

सब कुछ सामान्य लग रहा है। परिणाम: build Makefile source

कमान: sphinx-build -d build/doctrees source build/html

यह काम करने के लिए लगता है। मैं index.html फ़ाइल खोलने में सक्षम था और जो मैं चाहता हूं उसका "खोल" देख सकता था।

जब मैं कोशिश करता हूं और अपना वास्तविक स्रोत कोड source फ़ोल्डर के रूप में रखता हूं तो मैं समस्याओं में भाग लेता हूं।

कमान: sphinx-build -d build/doctrees ../ys_utils build/html

परिणाम:

Making output directory... 
Running Sphinx v1.1.3 
loading pickled environment... not yet created 
No builder selected, using default: html 
loading intersphinx inventory from http://docs.python.org/objects.inv... 
building [html]: targets for 1 source files that are out of date 
updating environment: 1 added, 0 changed, 0 removed 
Traceback (most recent call last):                        
    File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object 
    __import__(self.modname) 
ImportError: No module named ys_utils 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object 
    __import__(self.modname) 
ImportError: No module named ys_utils.test_validate_ut 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object 
    __import__(self.modname) 
ImportError: No module named ys_utils.git_utils 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object 
    __import__(self.modname) 
ImportError: No module named setup.setup 

/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:4: WARNING: autodoc can't import/find module 'ys_utils', it reported error: "No module named ys_utils", please check your spelling and sys.path 
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:10: WARNING: autodoc can't import/find module 'ys_utils.test_validate_ut', it reported error: "No module named ys_utils.test_validate_ut", please check your spelling and sys.path 
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:12: WARNING: don't know which module to import for autodocumenting u'UnitTests' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name) 
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:18: WARNING: autodoc can't import/find module 'ys_utils.git_utils', it reported error: "No module named ys_utils.git_utils", please check your spelling and sys.path 
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:24: WARNING: autodoc can't import/find module 'setup.setup', it reported error: "No module named setup.setup", please check your spelling and sys.path 
WARNING: master file /home/ricomoss/workspace/nextgen/ys_utils/index.rst not found 
looking for now-outdated files... none found 
pickling environment... done 
checking consistency... /home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:: WARNING: document isn't included in any toctree 
done 
preparing documents... done 
writing output... [ 50%] index                         
Exception occurred: 
    File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/environment.py", line 1213, in get_doctree 
    f = open(doctree_filename, 'rb') 
IOError: [Errno 2] No such file or directory: '/home/ricomoss/workspace/nextgen/docs/build/doctrees/index.doctree' 
The full traceback has been saved in /tmp/sphinx-err-jjJ7gM.log, if you want to report the issue to the developers. 
Please also report this if it was a user error, so that a better error message can be provided next time. 
Either send bugs to the mailing list at <http://groups.google.com/group/sphinx-dev/>, 
or report them in the tracker at <http://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks! 

मैं स्फिंक्स के लिए एक पूरा नौसिखिया और प्रलेखन के इस प्रकार के लिए अपेक्षाकृत नया हूँ। क्या कोई कुछ सुझाव दे सकता है?

संपादित करें:

मैं इस संभालने के लिए एक Makefile उपयोग करने में सक्षम होना चाहते हैं। अभी तक मेरे पास मेरे प्रोजेक्ट में दो फ़ोल्डर्स हैं।

nextgen/ls

docs ys_utils

मैं nextgen/docs/Makefile जरूरत ys_utils के लिए HTML और अन्य सभी मॉड्यूल मैं करने जा रहा हूँ उत्पन्न करने के लिए।

+0

ऐसा लगता है कि '/ home/ricomoss/workspace/nextgen/docs/build/doctrees/index.doctree' मौजूद नहीं है, और ऐसा माना जाता है। क्या यह अस्तित्व में है? –

+0

नहीं, ऐसा नहीं है। इस समस्या को ठीक करने के लिए मेकफ़ाइल से मैं क्या जोड़ सकता हूं (निकालें?)? – Rico

उत्तर

1

मुझे लगता है कि मैंने पहली बार ऐसा किया जब मैंने टक्ट्री में एक फाइल जोड़ने की कोशिश की। मुझे लगता है कि ऐसा इसलिए था क्योंकि मैंने maxdepth लाइन और फ़ाइल नाम के बीच खाली रेखा छोड़ी थी।

.. Animatrix Concepts documentation master file, created by 
    sphinx-quickstart on Thu Mar 22 18:06:15 2012. 
    You can adapt this file completely to your liking, but it should at least 
    contain the root `toctree` directive. 

Welcome to Animatrix Concepts documentation! 
============================================ 

Contents: 

.. toctree:: 
    :maxdepth: 2 

    stuff 


Indices and tables 
================== 

* :ref:`genindex` 
* :ref:`modindex` 
* :ref:`search` 

ऊपर मेरी अनुक्रमणिका.rst फ़ाइल है। stuff.rst उसी निर्देशिका में रहता है जैसे कि।

+2

यह कहां जाएगा? मेरे पास 'index.rst''/docs/source' और '/ ys_utils' में है। मुझे लगता है कि यह 'दस्तावेज़' संस्करण में होना चाहिए? मैं सिर्फ 'sphinx-quickstart' के साथ बनाई गई डिफ़ॉल्ट' index.rst' फ़ाइल का उपयोग कर रहा हूं। – Rico

+0

-1 ट्रेसबैक के रूप में यह स्पष्ट लगता है कि मॉड्यूल 'sys.path' में नहीं हैं, इसलिए ऑटोडोक उन्हें नहीं ढूंढता है। '.rst' फ़ाइलें पाई जाती हैं। – bmu

52

Autodoc आपके मॉड्यूल नहीं ढूंढ सकता है, क्योंकि वे sys.path में नहीं हैं।

आपको अपने में sys.path में अपने मॉड्यूल के पथ को शामिल करना होगा। अपने conf.py (sys के आयात के बाद) के शीर्ष पर देखें, sys.path.insert() कथन है, जिसे आप अनुकूलित कर सकते हैं।

वैसे: आप अपने दस्तावेज़ बनाने के लिए स्फिंक्स द्वारा बनाए गए Makefile का उपयोग कर सकते हैं। बस फोन

make 

विकल्प देखने के लिए।make html चलाने से पहले

make clean 

:

अगर कुछ कोशिश से पहले गलत हो गया।

21

conf.py

में सिर्फ अपने प्रोजेक्ट फ़ोल्डर के लिए पथ जोड़ें।

sys.path.append('/home/workspace/myproj/myproj') 
+1

पथ हार्ड-कोडिंग सबसे अच्छी बात नहीं है जो आप अपने 'conf.py' के साथ कर सकते हैं। – firegurafiku

+7

यदि आपके पास '/ app','/docs' जैसी प्रोजेक्ट संरचना है, तो आप 'sys.path.append (os.path.djoin (os.path.dirname (__ name__), 'का उपयोग कर सकते हैं। '))' और फिर अपने '.rst'-file में' .. automodule :: app' का उपयोग करें। – fnkr

+0

यह सबसे अच्छा समाधान है! धन्यवाद। इसके अलावा sys.path.append ('../') को जोड़ने के लिए बेहतर है यदि आपका दस्तावेज़ दस्तावेज़ों में है/इसलिए यदि आप गिट करने के लिए प्रतिबद्ध हैं तो कोई भी इसे स्थानीय रूप से चला सकता है। – harishkashyap

0

स्फिंक्स, बहुत python3 संगत नहीं है मेरे दुभाषिया में __import__(module_name)औरimportlib.import_module(module_name) दोनों काम चल रहा है, लेकिन स्फिंक्स में नहीं।

मैं स्फिंक्स का मालिक शाखा बाहर की जाँच की कोशिश की, Makefile में python3.4 करने के लिए अपने दुभाषिया बदल गया है और कि 3.x श्रृंखला में हटा दिया गया है मॉड्यूल पर त्रुटियों मिला है। तुम मेरी समस्या रिपोर्ट देख सकते हैं:

https://github.com/sphinx-doc/sphinx/issues/2046

0

आप Pweave और noweb स्वरूपण का उपयोग पहला दस्तावेज है कि उन्हें में एम्बेडेड कोड के उत्पादन में शामिल हैं उत्पन्न करने के लिए कर सकते हैं।

<<echo=False>>= 
print("some text that will appear in the rst file") 
@ 

और Pweave उन टुकड़ों को निष्पादित करेंगे, और उन्हें एक परिणामस्वरूप पहला फ़ाइल में अपने उत्पादन में, जिसे फिर आप के साथ उपयोग कर सकते हैं के साथ बदलें: मूल रूप से, अगर आप इस तरह उल्लेखनीय मात्रा में एम्बेडेड अजगर कोड के साथ अपने पहला फ़ाइल लिखते हैं, स्फिंक्स। यह कैसा दिखता है इसके बारे में अधिक जानकारी के लिए Pweave reST example देखें।

0

मैंने अपने स्फिंक्स कोड को दस्तावेज़ित करने के लिए ऑटोडोक का उपयोग करने की कोशिश की, लेकिन यह मेरी फ़ाइलों में से एक को छोड़ देगा क्योंकि मैंने उस फ़ाइल में कोई कक्षा नहीं बनाई है।

""" 
testing autodoc - this should be first line in doc 
""" 
import simulator 
world = simulator.simulator() 
#some more code... 

इस फ़ाइल सफलतापूर्वक स्फिंक्स द्वारा प्रलेखित मिल कभी नहीं होगा: यहाँ क्या फ़ाइल मूल रूप से कुछ इस तरह देखा है।

""" 
testing autodoc - this should be first line in doc 
""" 
import simulator 

class runme(): 
    def __init__(self): 
    world = simulator.simulator() 
    #some more code... 


if __name__ == "__main__": 
    runme() 

तो, ऐसा लगता है स्फिंक्स की आवश्यकता है एक वर्ग में अपने सभी फाइलों को रैप करने के लिए उन्हें मिल प्रलेखित रहे हैं: यह प्रलेखित किया जाना करने के लिए, मैं निम्नलिखित करना था। उम्मीद है कि मदद करता है, क्योंकि मैं यह पता लगाने की कोशिश कर रहा घंटे बिताए क्यों स्फिंक्स

+0

यदि यह स्वचालित रूप से डॉक्टरिंग सिद्धांतों को निकालने के लिए index.rst फ़ाइल में फ़ंक्शंस घोषित करने में मदद करता है। '.. ऑटो फ़ंक्शन :: a_function_name' मेरे लिए अच्छा काम करता है। – Dilettant

0

ऐसा लगता है os.path.append() की तरह लोगों के लिए ठीक काम कर रहा है दस्तावेजीकरण नहीं किया गया था, लेकिन अगर आप conf.py टेम्पलेट का पालन करें, आप के सामने करने के लिए मॉड्यूल पथ सम्मिलित हैं sys.path का उपयोग कर os.path.insert(0, ...), और आप सेटअप अपने sphinx परियोजना अलग bulid और source निर्देशिका का उपयोग करने के है, तो बस एक अतिरिक्त .

import os 
import sys 
sys.path.insert(0, os.path.abspath('..')) 

जोड़ने के लिए, कि कॉल के बजाय होना चाहिए:

sys.path.insert(0, os.path.abspath('../..')) 
संबंधित मुद्दे