রুট ডকুমেন্টের নীচে ডিরেক্টরিতে অবস্থিত নথির সাথে স্ফিংক্স লিঙ্ক করতে পারে?


90

আমি পাইথন নন প্রকল্পটি নথির জন্য স্ফিংস ব্যবহার করছি। আমি ./docপ্রতিটি সাবমডিউলে ফোল্ডারগুলি বিতরণ করতে চাই , submodule_name.rstসেই মডিউলটি নথিভুক্ত করার জন্য ফাইলগুলি। আমি তখন পুরো ডিজাইনের জন্য একটি নকশা তৈরি করতে সেই ফাইলগুলি মাস্টার হায়ারার্কিতে চুষতে চাই।

অর্থাৎ:

Project
  docs
    spec
      project_spec.rst
      conf.py
  modules
    module1
      docs
        module1.rst
      src
    module2
      docs
        module2.rst
      src

আমি মাস্টার project_spec.rstডকুমেন্ট ট্যাক্ট্রিতে এই জাতীয় ফাইল অন্তর্ভুক্ত করার চেষ্টা করেছি :

.. toctree::
   :numbered:
   :maxdepth: 2

   Module 1 <../../modules/module1/docs/module1>

তবে এই ত্রুটি বার্তার ফলাফল:

সতর্কতা: ট্যাক্ট্রিটিতে ন'ডেক্সটিং ডকুমেন্ট u'modules / মডিউল 1 / ডক্স / মডিউল 1

../কোনওভাবে কোনও দস্তাবেজের পথে ব্যবহার করা কি সম্ভব নয় ?

আপডেট: যুক্ত করা হয়েছে conf.py অবস্থান

আপডেট: নীচে অন্তর্ভুক্ত কৌশলগুলি ব্যতীত, এটি এখনও (2019) সম্ভব নয়। এখানে একটি উন্মুক্ত সমস্যা রয়েছে যা এগিয়ে চলেছে: https://github.com/sphinx-doc/sphinx/issues/701


আপনার কি .rstলাইনে এক্সটেনশন যুক্ত করতে হবে Module 1 <../../modules/module1/docs/module1>?
ক্রিস

আমি এটি মনে করি না কারণ স্পিনিক্স ডক্সে : যেহেতু আরএসটি উত্স ফাইলগুলিতে বিভিন্ন এক্সটেনশন থাকতে পারে (কিছু লোক .txt পছন্দ করে, কিছু পছন্দ করে - প্রথমটিকে এক্সটেনশন উত্স_সুফিক্স দিয়ে কনফিগার করা যেতে পারে) এবং বিভিন্ন ওএসে পৃথক পথ বিভাজক রয়েছে, স্পিনিক্স এগুলি বিমূর্ত করে: সমস্ত "নথির নামগুলি" উত্স ডিরেক্টরি সম্পর্কিত, এক্সটেনশনটি ছিটিয়ে দেওয়া হয়, এবং পাথ বিভাজকগুলি স্ল্যাশে রূপান্তরিত হয়।
এমসি_এলেক্ট্রন

ঠিক আছে, এক অনুমান! সুতরাং আমি অনুমান করি যে source_suffixএটি .rstআপনার conf.pyকনফিগারেশন ফাইলটিতে সেট করা আছে । এছাড়াও, আপনার ডিরেক্টরি হায়ারার্কিতে এই ফাইলটি কোথায় আছে, যেহেতু মনে হয় যে সমস্ত পাথ এই ফাইলের সাথে সম্পর্কিত?
ক্রিস

হ্যাঁ, source_suffixসেট করা আছে .rstএবং ফাইলটির conf.pyমতো একই ফোল্ডারে রয়েছে project_spec.rst
এমসি_এলেক্ট্রন 13

উত্তর:


108

হ্যা, তুমি পারো!

একটি সিমিলিংকের পরিবর্তে (যা উইন্ডোজে কাজ করবে না), এমন স্টাব ডকুমেন্ট তৈরি করুন যার এতে কিছুই নেই তবে .. include::নির্দেশিকা।

আমি উত্স গাছের শীর্ষে থাকা একটি README ফাইলের সাথে লিঙ্ক করার চেষ্টা করে ছুটে এসেছি। আমি নিম্নলিখিত একটি ফাইল বলা ফাইল মধ্যে রাখি readme_link.rst:

.. include:: ../README

তারপরে index.rst, আমি ট্যাক্ট্রিটিকে এমন দেখাচ্ছে:

Contents:

.. toctree::
   :maxdepth: 2

   readme_link
   other_stuff

এবং এখন আমার সূচক পৃষ্ঠায় আমার প্রকাশিত নোটগুলির একটি লিঙ্ক আছে।

এই পরামর্শের জন্য http://reinout.vanrees.org/weblog/2010/12/08/incolve-ternternal-in-sphinx.html ধন্যবাদ


4
এটি README এর চিত্র বা অনুরূপ যা সম্পর্কিত সূচক রয়েছে যা ডিরেক্টরি সূচকের মধ্যে বৈধ নয় rst প্রথমটি রয়েছে, আপনি কীভাবে এটি পরিচালনা করবেন? আমি 'চিত্র ফাইলটি পঠনযোগ্য নয়' ত্রুটিগুলি পেয়েছি।
লুকাস ডাব্লু

হ্যাঁ, আপনি ইউনিক্সে সিমলিঙ্কগুলি সহ এটি করতে পারেন। আপনি ডকস-ফোল্ডার (যেমন docs) হিসাবে একই নামের সাথে একটি লিঙ্ক তৈরি করতে পারেন যা বর্তমান-দির ('।') এর সাথে লিঙ্ক করে। তারপরে আপনি ব্যবহার করতে পারেন: ডাউনলোড করুন: docs\foo.rstএবং এটি docsফোল্ডার বা এর পিতামাতার মধ্যে ফাইলগুলির জন্য কাজ করবে ।
ankostis

4
আমি ঠিক এখানে ফিরে এসে এই উত্তরটি গ্রহণ করেছি, ধন্যবাদ! চিত্রগুলি সম্পর্কে নিশ্চিত নয়, তবে আপনি সর্বদা সেগুলি কনফাইপিতে অনুলিপি করতে পারেন।
এমসি_এলেক্ট্রন

11
.. include:: ../readme.rstএক্সটেনশন সহ আমার ব্যবহার করা দরকার ।
এভেরিস্ট

4
README.rst এর কেবলমাত্র একটি অংশ অন্তর্ভুক্ত করতে: muffinresearch.co.uk/…
এডেরাগ

14

দেখে মনে হচ্ছে উত্তরটি হ'ল না, টোক-ট্রি-তে তালিকাভুক্ত নথি অবশ্যই উত্স ডিরেক্টরিতে থাকা উচিত , যা আপনার মাস্টার ডকুমেন্ট এবং conf.py(এবং কোনও উপ-ডিরেক্টরি) ধারণকারী ডিরেক্টরিতে থাকতে হবে।

থেকে স্পিংক্স-dev মেইল তালিকা :

এসটিএসসিআই-তে আমরা স্পিনিক্সে পৃথক প্রকল্পের জন্য ডকুমেন্টেশন লিখি এবং তারপরে একটি "মাস্টার ডকুমেন্ট "ও প্রস্তুত করি যা এতে আরও কয়েকটি প্রকল্প-নির্দিষ্ট নথি অন্তর্ভুক্ত করে (ট্যাক্ট্রি ব্যবহার করে) অন্তর্ভুক্ত থাকে। এটি করার জন্য, আমরা প্রকল্পগুলির ডক সোর্স ডিরেক্টরিতে মাস্টার ডকুমেন্টের ডক সোর্স ডিরেক্টরিতে সিমলিংক তৈরি করি, যেহেতু ট্যাক্ট্রি সত্যই ডক উত্স গাছের বাইরে ফাইলগুলি অন্তর্ভুক্ত করতে চায় না।

সুতরাং ফাইলগুলি অনুলিপি করার পরিবর্তে shutilআপনি Project/docs/specডিরেক্টরিতে আপনার সমস্ত মডিউলগুলিতে সিমলিঙ্ক যুক্ত করার চেষ্টা করতে পারেন । আপনি যদি একটি সিমিলিংক তৈরি করেন Project/modulesতবে এই ফাইলগুলিকে আপনার টোক-ট্রিটিতে কেবল উল্লেখ করা হবে modules/module1/docs/module1ইত্যাদি would


4
ওটা খুব খারাপ. ওয়ার্ড ডক্স থেকে স্ফিংস-এ স্যুইচ করার চেষ্টা করার মধ্যে একটি সুবিধা আমি হ'ল আপনি নিজের প্রকল্পে পুনরায় ব্যবহারযোগ্য হার্ডওয়্যার মডিউলটি আমদানি করতে পারেন এবং নকশার জন্য মাস্টার ডকুমেন্টেশনে এটির ডকুমেন্টেশনটি অন্তর্ভুক্ত করতে পারেন। আমি সিমলিংক ব্যবহার করতাম তবে হায় আমি উইন্ডোতে আছি।
এমসি_এলেক্ট্রন

sys.pathউত্তরোত্তর জন্য, আমি কনফাইপিতে সাব-মডুল ডক ফোল্ডারটি যুক্ত করার চেষ্টা করেছি তবে এটি কার্যকর হয়নি।
এমসি_এলেক্ট্রন

4
@ এমসি_এলেক্ট্রন উইন্ডোজের সিমলিংকের জন্য, mklink কমান্ডটি ব্যবহার করুন।
জেরেমি

11

কনফাইপিতে সিস্টেমে sys.path এবং os.path ব্যবহার করে আপেক্ষিক পাথ যুক্ত করুন

উদাহরণ স্বরূপ:

import os
import sys

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

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

Contents:

.. toctree::
   :maxdepth: 4

   Package1 <package1.rst>
   Package2 <package2.rst>
   Package3 <package3.rst>

তারপরে প্যাকেজ 1. প্রথমটিতে, আপনি কেবলমাত্র সাধারণত সম্পর্কিত প্যাকেজগুলি উল্লেখ করতে সক্ষম হন।

Package1 package
=====================

Submodules
----------

Submodule1 module
----------------------------------

.. automodule:: file_within_directory_1
    :members:
    :undoc-members:
    :show-inheritance:

Submodule1 module
----------------------------------

.. automodule:: file_within_directory_2
    :members:
    :undoc-members:
    :show-inheritance:

এই নতুন আচরণ? এটি কোন সংস্করণে যুক্ত হয়েছিল?
এমসি_এলেক্ট্রন

4
যদি আরও নতুনদের সূচিত করতে বর্ণিত হয় তবে দুর্দান্ত হবে। উদাহরণস্বরূপ, কি Package1? এটি কি প্রথম pathব্যবহার করে নির্দিষ্ট করা হয়েছে sys.path.insert? বা, কোথাও একটি টিউটোরিয়াল আছে? আমি প্রাসঙ্গিক ডকটি খুঁজে পাচ্ছি না।
মানাভালন গাজাপাতি

Package1একটি নামযুক্ত এন্ট্রি যাতে TOC বিভাগের শিরোনাম হিসাবে "প্যাকেজ 1" দেখায়।
পাবলোসি

4
এটি আপনাকে পাইথন মডিউলগুলি অন্য ডিরেক্টরিতে অটোডোক করার অনুমতি দেয় তবে এটি আপনাকে আরএসটি ফাইলগুলিকে অন্য ডিরেক্টরিতে অন্তর্ভুক্ত করতে দেয় না।
এমসি_এলেক্ট্রন

1

রুটটিতে কেবল সূচি.আরস্ট ফাইল এবং প্রজেক্ট / ডক্সে থাকা সমস্ত অন্যান্য স্পিংক্স স্টাফ রাখতে স্পিনক্স কনফিগার করাও সম্ভব:

উইন্ডোজের জন্য আমি সমস্ত স্পিনক্স ফাইল এবং ডায়ারগুলি (ইনডেক্স.আরস্ট ব্যতীত) ডক্সে স্থানান্তরিত করেছি এবং পরিবর্তন করেছি:

docs/make.bat: পরিবর্তন

set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS%  .

প্রতি

set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS%  -c . ..

docs/conf.py: অ্যাড

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

ধন্যবাদ! একই ডকুমেন্টেশন থেকে রেফারেন্স করা একটি সংগ্রহস্থলে একাধিক সম্পর্কিত প্যাকেজ থাকার সময় সেই কনফিগারেশনটি আমার পক্ষে ঠিক কাজ করে।
গ্রেগর মল্লেগার

1

আমি বহিরাগত জুপিটার নোটবুকটি অন্তর্ভুক্ত করতে চেয়েছিলাম এমন পার্থক্যটি দিয়ে আমি আমার বেশিরভাগ একই সমস্যাটি সমাধান করেছি। আমি এনবিএসফিনেক্স ইনস্টল করেছিলাম কিন্তু আমি এটি কাজ করতে পারি না। কি কাজ করে না:

  1. আমার কাছে যে ডিরেক্টরিটি আমি রুটটিতে অন্তর্ভুক্ত করতে চেয়েছিলাম তা ছিল:

    conf.py:

    import os import sys sys.path.insert(...

  2. .. include:: directiveফাইলটি ব্যবহার করে ডকুমেন্টেশনের অন্তর্ভুক্ত ছিল তবে রয়েছে।

অবশেষে কী সমস্যার সমাধান হয়েছে তা হল প্যাকেজ এনবিএসফিনেক্স-লিংক ইনস্টল করা


0

একটি সমাধান, যদি আপেক্ষিক লিঙ্কগুলি ব্যাক আপ ব্যবহার করা সত্যই অসম্ভব হয় তবে তা ../হ'ল আমি shutilঅনুমানের জন্য নির্দিষ্ট ফোল্ডার ট্রিটিতে ফাইলগুলি অনুলিপি করতে ব্যবহার করতে conf.pyপারি, তবে একেবারে প্রয়োজনীয় না হলে আমার একাধিক অনুলিপি থাকত না।

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