স্ফিংস-বিল্ড ব্যর্থ - অটোডোক মডিউল আমদানি / সন্ধান করতে পারে না


108

আমি স্পিনক্সের সাথে শুরু করার চেষ্টা করছি এবং মনে হচ্ছে অবিরাম সমস্যা আছে।

আদেশ: docs/sphinx-quickstart

আমি সমস্ত প্রশ্নের উত্তর দিই এবং সবকিছু ঠিকঠাক কাজ করে।

আদেশ: docs/ls

সবকিছু স্বাভাবিক দেখাচ্ছে। ফলাফল:build Makefile source

আদেশ: sphinx-build -d build/doctrees source build/html

মনে হচ্ছে এটি কাজ করে। আমি সূচক 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এবং অন্য যে সমস্ত মডিউলগুলি আমি নিতে যাচ্ছি তা তৈরি করতে হবে।

উত্তর:


90

অটোডোক আপনার মডিউলগুলি খুঁজে পাচ্ছে না, কারণ সেগুলিতে নেই sys.path

আপনাকে আপনার মডিউলগুলির পথটি নিজের sys.pathমধ্যে অন্তর্ভুক্ত করতে হবে conf.py। আপনার conf.py(আমদানির ঠিক পরে sys) শীর্ষে দেখুন , এখানে একটি sys.path.insert()বিবৃতি রয়েছে, যা আপনি মানিয়ে নিতে পারেন can

উপায় দ্বারা: আপনি Makefileআপনার ডকুমেন্টেশন তৈরি করতে স্ফিংস দ্বারা নির্মিত তৈরি ব্যবহার করতে পারেন । শুধু কল

make

বিকল্পগুলি দেখতে।

চেষ্টা করার আগে যদি কিছু ভুল হয়ে থাকে:

make clean

চালানোর আগে make html


64

os.path.append()লোকদের জন্য ঠিক আছে বলে মনে হচ্ছে, তবে আপনি যদি conf.pyটেমপ্লেটটি অনুসরণ করেন তবে আপনি sys.pathব্যবহারের সামনের দিকে মডিউলটির পথটি প্রবেশ করিয়ে দিবেন os.path.insert(0, ...)এবং কেবল একটি অতিরিক্ত যুক্ত করবেন.

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

আপনি যদি sphinxপৃথক buildএবং sourceডিরেক্টরি ব্যবহার করতে আপনার প্রকল্প সেটআপ করেন তবে তার পরিবর্তে সেই কলটি হওয়া উচিত:

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

কিছু অদ্ভুত কারণে os.path.abspath(os.path.split(__file__)[0] + '../../')কাজ করার সময় কাজ করে না os.path.abspath('../..'))। কেন আমি জানি না।
ফেলিক্স বি

32

ভিতরে conf.py

কেবল আপনার প্রকল্প ফোল্ডারে পথ জুড়ুন।

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

9
পাথ হার্ড-কোডিং আপনার সাথে করতে পারেন এমন সেরা জিনিস নয় conf.py
ফায়ারগুরফিকু

18
তোমার মত একটি প্রকল্প গঠন থাকে /app, /docs... আপনি ব্যবহার করতে পারে sys.path.append(os.path.join(os.path.dirname(__name__), '..'))এবং তারপর ব্যবহার .. automodule:: appআপনার .rst-file।
fnkr

3

যদি

  1. মডিউল রুট পাথটি সঠিকভাবে কনফাইপিতে সেট করা আছে
  2. __init__.py সঠিকভাবে স্থাপন করা হয়
  3. প্রথম সিনট্যাক্সটি সঠিক

এবং আপনার অটোডোক এখনও মডিউলগুলি সন্ধান করতে পারে না ...

এটি হতে পারে কারণ those মডিউলগুলির নির্ভরতাগুলি আপনার অজগর পরিবেশের অধীনে সন্তুষ্ট নয়। সমস্ত আমদানি বিবৃতি মডিউলগুলির মধ্যে কাজ করছে কিনা তা আপনি পরীক্ষা করতে চাইবেন।


4
আমি বুঝতে পারি না কেন স্ফিংক্সের নির্ভরতা দরকার, এটি কি ডকাস্ট্রিংগুলির মধ্যে পরীক্ষা করার সম্ভাবনার কারণে? এটি এড়ানো যায় (আমার কোনও প্যাকেজ দরকার নেই, আমি কেবল স্পিনিক্সকে এইচটিএমএল-তে ডকাস্ট্রিং পার্স করতে চাই)।
সিগ্লেসেট

: আপনি আমদানি করতে এই নির্ভরতা আপনার conf.py ফাইলে autodoc_mock_imports ব্যবহার করবেন না চান sphinx-doc.org/en/master/usage/extensions/...
Filip stepniak

1

আমি মনে করি আমি প্রথমবার ট্যাক্টরিতে কোনও ফাইল যুক্ত করার চেষ্টা করেছি। আমি মনে করি এটি হ'ল কারণ আমি: ম্যাক্সডেপথ লাইন এবং ফাইলের নামের মধ্যে ফাঁকা রেখা রেখেছি।

.. 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`

উপরে আমার সূচি.আরস্ট ফাইল। স্টাফ স্টার্টটি একই ডিরেক্টরিতে থাকে।


4
এই কোথায় যাবে? আমি index.rst/docs/sourceএবং /ys_utils। আমি অনুমান করছি এটি docsসংস্করণে থাকা উচিত ? আমি কেবল তৈরি করা ডিফল্ট index.rstফাইলটি ব্যবহার করছি sphinx-quickstart
রিকো

-1 ট্রেসব্যাক থেকে এটি পরিষ্কার মনে হয় যে মডিউলগুলি নেই sys.path, তাই অটোডোক সেগুলি খুঁজে পাবে না। .rstফাইল পাওয়া যায়।
বিএমএম

1

আমি এই একই ত্রুটি পেয়েছি তবে এটি অন্য উত্তরে বর্ণিত চেয়ে সম্পূর্ণ ভিন্ন কারণে হয়ে গেছে।

আমার .. automethod:: mymodule.funcনির্দেশনাটি আসলে হওয়া উচিত ছিল:

.. automethod:: mymodule::func`

0

প্রথম দস্তাবেজগুলি তৈরি করতে আপনি পিউইভ এবং নয়েব ফর্ম্যাটিং ব্যবহার করতে পারেন যা এতে এমবেড করা কোডের আউটপুটকে অন্তর্ভুক্ত করে। মূলত, আপনি আপনার প্রথম ফাইলটি লিখুন, পাইথন কোড সহ এইরকম চিহ্নিত অংশগুলিতে এমবেড করা:

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

এবং পোয়ভ সেই অংশগুলি কার্যকর করবে এবং ফলস্বরূপ প্রথম ফাইলটিতে তাদের আউটপুট দিয়ে প্রতিস্থাপন করবে, যা আপনি পরে স্ফিংস দিয়ে ব্যবহার করতে পারবেন। এটি কীভাবে দেখায় তার আরও বিশদের জন্য পাইউইভ রিস্টের উদাহরণ দেখুন See

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.