33

从 Python 2.6 开始,文档似乎采用了新的reStructuredText格式,而且开箱即用地构建Texinfo 信息文件似乎并不容易。

我是一个 Emacs 迷,我更喜欢安装在 Info 中的文档。

有人有 Texinfo 格式的 Python 2.6 或更高版本的文档吗?你是如何转换它们的?或者,那里有维护的构建吗?

我知道我可以使用 w3m 或haddoc来查看 html 文档——我真的希望它们出现在 Info.xml 中。

我玩过Pandoc,但经过一些小实验后,它似乎不能很好地处理文档之间的链接,而我更大的实验——在所有文档中运行它,看看会发生什么——仍然持续两天自从我开始它!

两个好答案

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

  • @wilfred-hughes:从 MELPA 安装是将预构建信息导入 Emacs 的最快方法
  • @alioth:自己构建它看起来比我在 2009 年问这个问题时容易得多
4

10 回答 10

24

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

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

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

下载python源代码

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

从 python 源码进入 Python/Doc 目录

编辑 Makefile,将build目标替换$(PYTHON) tools/sphinx-build.pysphinx-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

于 2010-10-17T08:48:56.940 回答
9

我已将Python 文档打包为 texinfo 文件

如果您将 Emacs 与 MELPA 一起使用,您可以简单地使用M-x package-install python-info.

于 2013-09-17T10:56:02.643 回答
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 文档

Cu Chi i python-info RET

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

于 2017-03-11T18:29:57.940 回答
3

对于那些希望得到答案而关注这个问题的人,我发现了另一个您可能想尝试的 rst2texinfo 实现:

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

于 2010-09-09T03:43:26.790 回答
2

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

(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")
)
于 2009-07-01T11:54:06.697 回答
2

Michael Ernst 曾经维护 Python 文档的 Info 格式:

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

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

于 2009-07-03T21:55:21.540 回答
1

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

  1. HTML
  2. 乳胶
  3. 纯文本

也许你可以使用 Latex 输出得到你想要的。使用文本输出,您将丢失交叉参考。

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

于 2009-06-29T21:34:56.153 回答
0

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

于 2019-10-29T16:36:26.183 回答
0

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

除了 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下载 tarball 并将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

Sphinx 需要比基本pip安装捆绑更多的依赖项。幸运的是,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“builder”转换并输出到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-u C-h i直接打开python.info

要在 Emacs 帮助目录节点中安装 info 文件,首先检查C-h v Info-default-directory-listinfo 文件的存储位置。把python.info文件放在那里。该目录中可能有一个文件被调用dir。该dir文件由节点列表生成texinfo并包含节点列表。如果不dir存在文件,请不要担心,这就是我们正在创建的。请注意,不建议dir手动编辑文件1

update-info-dir在您放置的任何目录中运行python.info。这将更新(或创建)dir.python.info

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

1除了人为错误(例如错误输入参考)外,“格式错误”的dir文件可能会出现问题。

于 2020-12-01T23:35:39.290 回答
0

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

于 2021-01-23T17:47:29.070 回答