您如何获得Texinfo Info格式的Python文档?

时间:2009-06-28 13:11:39

标签: python emacs restructuredtext texinfo

自Python 2.6以来,文档似乎采用了新的reStructuredText格式,并且现在开始构建Texinfo Info文件似乎并不容易。

我是Emacs上瘾者,更喜欢我在Info。中安装的文档。

有没有人使用Texinfo格式的Python 2.6或更高版本的文档?你是怎么转换它们的?或者,那里有某个维护的构建吗?

我知道我可以使用w3m或haddoc来查看html文档 - 我真的想在Info中使用它们。

我和Pandoc一起玩过但经过一些小实验后,它似乎并没有很好地处理文档之间的链接,而且我的大型实验 - 在所有文档中运行它以便看到会发生什么 - 自从我开始它以来两天仍然在喋喋不休!

两个好的答案

突出显示以下两个答案,因为SO不允许我接受这两个答案:

10 个答案:

答案 0 :(得分:23)

Jon Waltman http://bitbucket.org/jonwaltman/sphinx-info分叉了sphinx并编写了一个texinfo构建器,它可以构建python文档(我还没有完成它)。它似乎很快会合并到狮身人面像中。

以下是下载的快速链接(临时):

以texinfo格式生成python doc的步骤:

下载python源代码

下载并安装sphinx-info包(在virtualenv中)

从python源

输入Python / Doc目录

使用build编辑Makefile,$(PYTHON) tools/sphinx-build.py目标替换sphinx-build,然后将此目标添加到makefile,注意,echo之前的空格是TAB:

texinfo: BUILDER = texinfo
texinfo: build
    @echo
    @echo "Build finished. The Texinfo files are in _build/texinfo."
    @echo "Run \`make' in that directory to run these through makeinfo" \
          "(use \`make info' here to do that automatically)."

编辑Python / Doc / conf.py添加:

texinfo_documents = [
    ('contents', 'python', 'Python Documentation', 'Georg Brandl',
     'Python', 'The Python Programming Language', 'Documentation tools',
     1),
]

然后运行make texinfo,它应该在build / texinfo目录中生成texifile。 要生成信息文件,请运行makeinfo python.texi

答案 1 :(得分:9)

我打包了Python docs as a texinfo file

如果您将Emacs与MELPA一起使用,则只需使用M-x package-install python-info安装即可。

答案 2 :(得分:5)

毫无疑问,自己生成特定Python版本的Python文档会很酷且很有挑战性。只需按照EmacsWiki,或者随意在本地编译它(在Debian Jessy for Python3.4.2):

sudo apt-get install python3-sphinx
cd ~/Desktop
wget https://www.python.org/ftp/python/3.4.2/Python-3.4.2rc1.tar.xz
tar -xf Python-3.4.2rc1.tar.xz
cd Python-3.4.2rc1/Doc/
sphinx-build -b texinfo -d build/doctrees . build/texinfo
# extra time to build
cd build/texinfo/
makeinfo python.texi
# extra time for convertation

我得到了这棵树:

.                                                                                                                              
├── logging_flow.png                                                                                                           
├── Makefile                                                                                                                   
├── pathlib-inheritance.png                                                                                                    
├── python.info                                                                                                                
├── python.info-1                                                                                                              
├── python.info-10                                                                                                             
├── python.info-11                                                                                                             
├── python.info-12                                                                                                             
├── python.info-13                                                                                                             
├── python.info-14                                                                                                             
├── python.info-15                                                                                                             
├── python.info-16                                                                                                             
├── python.info-17                                                                                                             
├── python.info-18                                                                                                             
├── python.info-19                                                                                                             
├── python.info-2                                                                                                              
├── python.info-20                                                                                                             
├── python.info-21                                                                                                             
├── python.info-22                                                                                                             
├── python.info-23                                                                                                             
├── python.info-24                                                                                                             
├── python.info-25                                                                                                             
├── python.info-26                                                                                                             
├── python.info-27                                                                                                             
├── python.info-28                                                                                                             
├── python.info-29                                                                                                             
├── python.info-3                                                                                                              
├── python.info-30                                                                                                             
├── python.info-31                                                                                                             
├── python.info-32                                                                                                             
├── python.info-33                                                                                                             
├── python.info-34                                                                                                             
├── python.info-4                                                                                                              
├── python.info-5                                                                                                              
├── python.info-6                                                                                                              
├── python.info-7                                                                                                              
├── python.info-8                                                                                                              
├── python.info-9                                                                                                              
├── python.texi                                                                                                                
├── python-video-icon.png                                                                                                      
├── tulip_coro.png                                                                                                             
└── turtle-star.png

现在可以通过

在Emacs 中原生查看python文档
  

C-u C-h i python-info RET

python-info是一个文件名(上面树中的第四个),甚至可以为一些任意节点添加书签,以便于习惯性和定期审阅。

答案 3 :(得分:3)

对于那些希望得到答案的人,我找到了另一个你想尝试的rst2texinfo实现:

http://bitbucket.org/jonwaltman/rst2texinfo/src

答案 4 :(得分:2)

另一个“解决方法”是按照Nikokrock直接在Emacs中的建议执行pydoc

(defun pydoc (&optional arg)
  (interactive)
  (when (not (stringp arg))
    (setq arg (thing-at-point 'word)))

  (setq cmd (concat "pydoc " arg))
  (ad-activate-regexp "auto-compile-yes-or-no-p-always-yes")
  (shell-command cmd)
  (setq pydoc-buf (get-buffer "*Shell Command Output*"))
  (switch-to-buffer-other-window pydoc-buf)
  (python-mode)
  (ad-deactivate-regexp "auto-compile-yes-or-no-p-always-yes")
)

答案 5 :(得分:2)

Michael Ernst过去常常维护Python文档的Info格式:

http://www.cs.washington.edu/homes/mernst/software/#python-info

您可以尝试使用他的makefile和html2texi脚本生成更新版本。两者都链接在上面的URL。我不确定它现在有多好用(最后一个版本是2001年左右),但是他的脚本评论很好(grep for“python”)。

答案 6 :(得分:1)

现在使用Sphynx框架生成Python文档。该框架没有texinfo输出格式。目前它有:

  1. HTML
  2. 胶乳
  3. 纯文字
  4. 也许你可以使用Latex输出得到你想要的东西。使用文本输出,您将丢失交叉参考。

    Personnaly当我想要文本输出时,我更喜欢使用pydoc。使用Vim我有一个shorcut来调用pydoc并打开一个窗口,其中包含我光标下的实体文档...

答案 7 :(得分:0)

Ubuntu发行版至少从18.04起开始提供软件包pythonX.Y-doc(包括Info格式的文档)(仿生);在19.04 X.Y代表2.7、3.7和3.8。该软件包没有很多依赖关系,我认为也可以将其安装在其他发行版中。

答案 8 :(得分:0)

信不信由你,Python项目实际上为我们提供了一种通过各种Makefile实现此目的的方法。这些文件利用Python Sphinx项目生成了一个texi文件,makeinfo随后可以将其转换为Emacs用于文档编制的格式info

除了Python3000之外,这些说明还需要GNU MakeTexinfo。这些文件打包在大多数Linux发行版中。不同的发行版可能使用不同的命名约定。有关相应的软件包名称,请参见发行版的文档。对于基于Debian的发行版:

# install make to utilize the Makefiles provided by the Python project
~/$ sudo apt-get install make

# install texinfo for the `makeinfo` command
~/$ sudo apt-get install texinfo

对于非Debian系统,软件包名称通常是相似的。对于Windows用户,建议使用WSL或创建一个虚拟机。

1。下载文档

导航至https://www.python.org/ftp/python/并下载适用于您的Python版本的压缩包。它看起来像:

https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz

您可以使用wget下载压缩包,然后使用tar打开压缩包。 xf选项用于“提取文件”:

# download the tarball
~/$ wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz

# extract the tarball
~/$ tar xf Python-3.7.9.tar.xz

2。在make venv

中运行Python-X.Y.Z/Doc

与基本pip安装捆绑在一起的情况相比,Sphinx需要更多的依赖项。幸运的是,Python项目提供了Makefile来创建必要的环境。有关详细信息,请参见Makefile

# Navigate to the Doc/ directory
~/$ cd Python-3.7.9/Doc

# "create a venv with necessary tools"
~/Python-3.7.9/Doc$ make venv

# activate the venv created by make
~/Python-3.7.9/Doc$ source venv/bin/activate

3。运行sphinx-build

现在已经设置了正确的环境,我们可以运行Sphinx。该调用创建一个在缓存期间使用-d选项的缓存。当前目录中找到的文档文件由texinfo“构建器”转换并输出到build/texinfo

# -b: Use the textinfo builder
# -d: Create "doctree pickles" cache in doctrees/
# Use the current directory as source
# Output to build/texinfo
(venv) ~/Python-3.7.9/Doc$ sphinx-build -b texinfo -d build/doctrees . build/texinfo

4。使用makeinfo生成info文件

同样,Python维护者已经向我们提供了我们所需要的(即使他们没有很好地记录下来)。上一个命令创建了一个texi文件以及另一个Makefile。 Makefile会调用makeinfo

# Navigate to the output directory
(venv) ~/Python-3.7.9/Doc$ cd build/texinfo

# Run the generated Makefile
(venv) ~/Python-3.7.9/Doc/build/texinfo$ make

# Hark, unto us an info file is born
(venv) ~/Python-3.7.9/Doc/build/texinfo$ ls
Makefile  python-figures  python.info  python.texi

就像印第安纳·琼斯一样,你注视着圣杯。许多人在这次旅行中丧生;你占了上风。花一点时间庆祝。

注意: makeinfo转换给我带来了错误。没关系,我说。获得所需的info,然后我从中贪婪地喝酒。

5。将python.info加载到Emacs中...

检查C-h v Info-default-directory-list信息文件的存储位置。将python.info文件放在此处。在该目录中还应该有一个名为dir的文件(如果不存在,请放心,它将被创建)。这是一个texinfo生成的文件,其中包含节点列表。尽管可以手动进行编辑,但这样做容易出错 1

在放置python.info的任何目录中运行update-info-dir,以更新dir以包括新文件。

有关texinfo系统的完整详细信息,请参见https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Installing-an-Info-File.html

如果您很懒,也可以只打开python.info文件并启用M-x Info-mode

1 除了人为错误之外,例如错误地引用参考文件,还可能由于“格式错误”的dir文件引起问题。

答案 9 :(得分:0)

对于 Python 3.8.0 及更高版本,预构建的信息文件可从 https://www.python.org/ftp/python/doc 和/或 https://docs.python.org/3/archives/ 获得。