2011-11-04 117 views
13

我尝试为使用Python 3.x编写的项目创建文档。 Sphinx我想使用的工具,根据official site,其最新版本1.1.2与Python 3.1+兼容。我的操作系统是Archlinux,这是一个使用Python 3.2+作为默认Python包的Linux发行版。如何强制Sphinx使用Python 3.x解释器

安装和配置很简单(easy_install -U Sphinx,然后sphinx-quickinstall),我从来没有被要求在2.x或3.x Python解释器之间进行选择。但是当我要求Sphinx创建我的项目的文档时,我的代码就像我为Python 2.x编写的那样进行了分析。

斯芬克斯准备好了Python 3.x吗?我犯了一个错误吗?

回答

6

昨天晚上我遇到了这个完全相同的问题,当时我遇到了你的问题。 —我也在Arch上。

我想这个问题可能是一些不同的事情,但对我来说,解决方案是我安装了python-disribute软件包的Python 2版本,因此有easy_install-2.7而不是easy_install-3.2

我相信我的情况下python-distribute了错误版本,安装在我尝试安装之前从吃豆子狮身人面像(安装版本1.0.8),所以在卸载狮身人面像和所有随后不需要依赖pacman -Rsu python-sphinx,然后在安装python-distribute了我正确版本easy_install,然后重新安装斯芬克斯easy_install和狮身人面像安装如预期般运作。

如果你有其他东西取决于 python-distribute那么这个过程可能有点不同。但是从试图删除 python-distribute开始,并从那里开始工作。

废弃最后一部分。今天早上太早了,我并没有想太多。 python2-distributepython-distribute是我认为可以共存的单独包。因此,如果这是您的问题,您只需检查是否有python-distribute(不是“2”),如果不安装它,然后确保使用easy_install-3.2安装Sphinx。

希望这可以帮助你。

0

我认为斯芬克斯只是使用“python”命令作为解释器。但是根据Makefile,当运行make进行安装时,可以使用PYTHON选项指定自己的选项。

+0

谢谢你的回答; 'make html' should(?)可能会在我的系统Python 3.2.2上调用'python',id est,这正是我对Sphinx的期望。但是我得到的结果表明另一个解释器被称为(python2?),即使我不明白为什么。 – suizokukan

+1

在终端“ls -l/usr/bin/python”中写入,它将打印您的默认解释器版本。 – Nicolas

+1

谢谢你的提示,但'ls -l/usr/bin/python'告诉我,'/ usr/bin/python'链接到我的系统上的'python3',id est到Python 3.2.2。 – suizokukan

1

似乎Sphinx仅与Python-2支持一起安装。虽然有多种方法可以为python3安装Sphinx,但只需使用virtualenv即可创建一个默认使用python3的自定义环境。

virtualenv -p /path/to/python-3

而且里面的virtualenv安装狮身人面像:

pip install Sphinx

作为奖励,这个方法可以让你创建不同的项目定制的环境。

PS。你可能要考虑使用virtualenvwrapper

+0

谢谢你的想法。你说“有多种方法可以为python3安装Sphinx”:你能否给我一些解释,因为我暂时不能使用 - virtualenv? – suizokukan

+0

@suizokukan嗯,这取决于平台和它的发行版。例如,Gentoo GNU/Linux支持开箱即用的Python并行安装。它还为可执行工具提供了版本前缀(我目前在我的机器上启用了Python-2.7和Python-3.2,因此安装了两个易于安装的命令:'easy-install-2.7'和'easy-install-3.2') 。那么您使用的是哪种平台/发行版? – plaes

+0

我正在使用(最新)Archlinux;在这个发行版上,命令'python'被链接到Python 3.2.2。 – suizokukan

7

在Ubuntu上,python3-sphinx是一个单独的软件包。就我而言,我需要安装python3-斯芬克斯:

sudo apt-get install python3-sphinx 

你或许可以一台机器上同时运行,但我只是删除了旧:

sudo apt-get remove python-sphinx 

我的旧的makefile,工作得很好用在此之后我的Python 3代码。

+0

在macOS上,卸载2.7版并仅安装3.5版不会执行任何操作。 – oarfish

5

我在Ubunut并有同样的问题。我不会用Josh_P萨科答案,因为..

  • 我不想改变我的Python路径。
  • 我不想卸载python-sphinx,因为我需要它与旧的项目。

所以我这个叫sphinx3-build小脚本固定它:

#!/usr/bin/python3 
# -*- coding: utf-8 -*- 
""" 
Same as /usr/bin/sphinx-build but with different 
interpreter 
""" 

import sys 

if __name__ == '__main__': 
    from sphinx import main, make_main 
    if sys.argv[1:2] == ['-M']: 
     sys.exit(make_main(sys.argv)) 
    else: 
     sys.exit(main(sys.argv)) 

这是一样的狮身人面像建造但有不同的解释。 在Makefile中我改变了以下行:

SPHINXBUILD = sphinx3-build 

现在将文件复制到该文件夹​​/usr/bin/

sudo cp sphinx3-build /usr/bin/ 

这为我工作。只有将 脚本放入与Makefile相同的文件夹中,并将SPHINXBUILD设置为 ./sphinx3-build,您也可以在本地将其用于一个项目。

+0

谢谢!这工作正常!我认为将通用/ usr/bin/python符号链接从/ usr/bin/python2切换到/ usr/bin/python3是一个好主意,因为我只使用python3 - 呃,它不是..其他progs然后由于错误的python语法导致的错误。^^这是一个更好的解决方案。 – stevosn

2

类似的解决方案已经提供的那些是把调用sphinx.main()直接进入Makefile中的SPHINXBUILD变量:

SPHINXBUILD = python3 -c "import sys,sphinx;sys.exit(sphinx.main(sys.argv))" 

狮身人面像产生的“用户友好支票sphinx-构建“代码块失败,然后我只是删除它。这个解决方案比我更喜欢,因为它不需要单独的脚本,也不需要删除任何python安装或sphinx模块。

+0

这不幸对我没有任何帮助。 – oarfish

+0

@oarfish如果你在windows上,可以在make.bat文件中使用非常类似的命令。 – Johann

+0

忘了提及我在OSX上。 – oarfish

1

当我搜索答案时,这是一遍又一遍地发布的网站。我在想这个答案不容易找到,因为其他人都比我明白的更好地理解狮身人面像。但是,如果任何仍在寻找答案,这是我最终结束是什么了:

sudo易于得到更新

sudo易于得到安装python3

命令和apt-get安装sqlite3的

命令和apt-get安装IDLE3

sudo易于得到安装python3-PIP

sudo易于得到安装python3-docutils的

sudo易于得到安装python3-Jinja2的

sudo易于得到安装python3-Pygments来做

须藤PIP3安装狮身人面像

的关键是我失踪的事实,有一个PIP3。在添加软件包作为习惯之前,我还会更新系统。

2

安装:PIP安装狮身人面像为python3PIP 3那样)。

pip3 install -U sphinx 

大厦:Makefile(的Linux/Mac上)的变化。

SPHINXBUILD = python -msphinx 

在生成文件上面的行改变python3(或python3.x)

SPHINXBUILD = python3 -msphinx 

如果默认蟒指向2.X版本 蟒。

相关问题