自Python 2.6以来,文档似乎采用了新的reStructuredText格式,并且现在开始构建Texinfo Info文件似乎并不容易。
我是Emacs上瘾者,更喜欢我在Info。中安装的文档。
有没有人使用Texinfo格式的Python 2.6或更高版本的文档?你是怎么转换它们的?或者,那里有某个维护的构建吗?
我知道我可以使用w3m或haddoc来查看html文档 - 我真的想在Info中使用它们。
我和Pandoc一起玩过但经过一些小实验后,它似乎并没有很好地处理文档之间的链接,而且我的大型实验 - 在所有文档中运行它以便看到会发生什么 - 自从我开始它以来两天仍然在喋喋不休!
突出显示以下两个答案,因为SO不允许我接受这两个答案:
答案 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实现:
答案 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输出格式。目前它有:
也许你可以使用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 Make和Texinfo。这些文件打包在大多数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或创建一个虚拟机。
导航至https://www.python.org/ftp/python/并下载适用于您的Python版本的压缩包。它看起来像:
https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz
您可以使用wget
下载压缩包,然后使用tar
打开压缩包。 x
和f
选项用于“提取文件”:
# 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
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
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
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
,然后我从中贪婪地喝酒。
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/ 获得。